这可能是一个有点无知的问题,但我是 mvc 新手,所以很抱歉!
我研究了书呆子晚餐身份验证模型,但在我的应用程序中,我有一个复杂的基于角色的身份验证。所以我要做的是:
void MvcApplication_PostAuthenticateRequest(object sender, EventArgs e)
{
HttpCookie authCookie = HttpContext.Current.Request
.Cookies[FormsAuthentication.FormsCookieName];
if (authCookie != null)
{
string encTicket = authCookie.Value;
if (!String.IsNullOrEmpty(encTicket))
{
FormsAuthenticationTicket ticket =
FormsAuthentication.Decrypt(encTicket);
CustomIdentity id = new CustomIdentity(ticket.Name);
GenericPrincipal prin = new GenericPrincipal(id, id.Roles);
HttpContext.Current.User = prin;
}
}
}
在登录时,我使用 FormsAuth 验证用户名/密码,然后创建 cookie。
这里的问题是每次创建自定义身份时,我都必须在数据库中查询用户角色。有没有解决这个问题的正确方法,或者我是否在做正确的事情来查询每个传入请求的数据库?我应该将角色列表保存在 cookie 中吗?
我也不太了解表单身份验证如何处理身份验证的整个生命周期?我使用与IFormsAuthentication
书呆子晚餐用户相同的设计模式,并且在登录期间我调用FormsAuth.SignIn()
它依次调用FormsAuthentication.SetAuthCookie
,它何时设法调用该membershipservice.validateuser()
方法?此外,如果已设置身份验证 cookie,为什么 nerd Dinner 会创建票证,然后将其添加到请求中,然后在期间读取它PostAuthenticationRequest
以检查它是哪个用户。票务操作是否像会话?
谢谢!圣诞节快乐!
更新:这个链接让我对表单身份验证票有了更好的理解。