2013-02-14 37 views
14

Mam aplikację Intranet z uwierzytelnianiem systemu Windows na podstawie MVC4.Uwierzytelnianie systemu Windows i Asp.Net Web API

Kiedy muszę WindowsIdentity dla celów autoryzacji w kontrolerze wystarczy użyć

HttpContext.User.Identity 

Teraz chciałem użyć nowego Asp.Net WebAPI dla niektórych Ajax wzywa.

Czy istnieje sposób na uzyskanie obiektu WindowsIdenty w taki sam prosty sposób, jak w kontrolerach MVC?

Odpowiedz

24

Proszę nie odwoływać się do HttpContext ze sterownika.

Możesz uzyskać dostęp do właściwości Kontrolerów User, która jest sposobem dostępu do Tożsamości, bez niepoprawnego odwołania do HttpContext.

public class MyController : ApiController 
{ 
    public string Get() 
    { 
     var indenty = this.User.Identity; 
    } 
} 

Dlaczego

Regulatory User Obiekt zapewnia poziom abstrakcji, która pozwala na łatwiejsze i drwi zatem testów jednostkowych. Ta abstrakcja pozwala również na większą przenośność, np. jeśli był to WebApi Self Host, nie miałbyś nawet dostępu do HttpContext.

Aby dowiedzieć się więcej o tym, jak testować urządzenie i kpić z jego właściwości, przeczytaj here. Aby uzyskać więcej informacji na temat: przenośności przeczytaj here.

+2

Jedno małe wyjaśnienie: jeśli chcesz, aby tożsamość korzystała z User.Identity – agez

+0

Oczywiście. Zaktualizowano, dziękuję. –

+1

Cóż, doceniam klarowność odpowiedzi, byłoby to dla wszystkich ludzi, gdyby wyjaśniono, DLACZEGO ktoś nie odwoływał się do HttpContext z kontrolera. – dansan

Powiązane problemy