我现在对如何在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身份验证?当我搜索时,主题是针对特定实现的某些主要假设理解某些概念的内容。我很难从哪里开始。