我現在對如何在ASP.NET MVC 5中實現身份驗證感到非常困惑。這是我第一次使用ASP.NET MVC,我習慣於桌面應用程序。有像OWASP,OAuth,FormsAuthenticationTicket和其他我真的很難跟進的其他術語。在ASP.NET MVC中實現身份驗證困惑5
我決定只是爲初學者做一個簡單的登錄頁面。只需檢查數據庫的用戶名和密碼,如果存在,則用戶通過身份驗證。到目前爲止,根據我讀過的內容,我可以這樣做來實現IAuthenticationFilter。我已經實現OnAuthentication像這樣:
public void OnAuthentication(AuthenticationContext context)
{
IIdentity ident = context.Principal.Identity;
if (!ident.IsAuthenticated || !ident.Name == "randy") // Name is just for testing
{
context.Result = new HttpUnauthorizedResult();
}
}
對於OnAuthenticationChallenge,我只是,如果用戶未通過身份驗證重定向到一個登錄操作方法(如果結果是HttpUnauthorizedResult,如果用戶沒有通過驗證思考它的代碼,它像就像OnAuthentication邏輯一樣,爲什麼我不能只重定向到那裏,我基於這些代碼在Web上的例子)。
在LogIn操作方法中,有一個UserRepository用於檢查用戶是否存在。但是,如果用戶存在,我不知道如何將其設置爲上下文的Principal。我不知道我是否做得對,所以請對此評論。
我想我的問題是:
是我在做什麼正確的嗎?
爲什麼Web中的示例只是在OnAuthentication中重定向,如果用戶未通過身份驗證。爲什麼要等待OnAuthentication執行?
如果我所做的是正確的,我該如何從LogIn Action方法設置Principal?我如何清除它?如果我理解正確,這是登錄/註銷(設置主體/清算主體)的同義詞嗎?
如果我所做的一切都是錯誤的,或者即使它是正確的,您是否可以指示我從哪裏開始學習ASP.NET MVC身份驗證?當我搜索時,主題是針對特定實現的某些主要假設理解某些概念的內容。我很難從哪裏開始。