如何解决MVC3-混合Windows和表单身份验证-自动登录-如何?
| 我已经实现了以下内容: 使用ASP.NET MVC进行Windows身份验证 背景 -这是一个Intranet应用程序,并使用Active Directory -应用程序维护自己的用户列表(即网络登录名)和角色 -我有一个自定义的Membership和RoleProvider类,它们执行Membership.ValidateUser逻辑等。 -验证逻辑: *如果用户(网络登录)在应用程序用户表中 他们已登录 *访问任何URL /操作后,如果尚未登录,请自动登录 *如果用户不在系统中,请将其重定向到\“ NoPermission \”页面 * [Authorize(Roles = \“ blah \”)]属性也被使用 这是控制器上的控制器OnAuthorize代码: 受保护的重写void OnAuthorization(AuthorizationContext authContext) { if (!this.HttpContext.Current.User.Identity.IsAuthenticated)
{
string networkLogin = HttpContext.Current.Request.LogonUserIdentity.Name;
if (this.MembershipService.ValidateUser(networkLogin))
{
FormsAuthentication.SignIn(networkLogin,true);
base.OnAuthorization(authContext);
}
}
}
这是我的Web.Config中的片段
<authentication mode=\"Forms\">
<forms loginUrl=\"~/Home/NoPermissionIndex\"
timeout=\"1\"
defaultUrl=\"~/Home/Index\"
/>
</authentication>
问题
除首次访问外,大多数功能都可以正常运行,用户已登录但仍被重定向到\“ NoPermission \”页面。此外,当会话/ cookie /票证(有什么区别,顺便说一句?)时,用户也被重定向到\“ NoPermission \”页面。
我从这里读
ASP.NET MVC HttpContext登录后获取IdentityName
可能的问题可能是由于请求中不存在身份验证cookie,并且我们必须在响应中发送它,以便客户端浏览器在后续调用中将其发送到请求中。
如果是这种情况,我该如何在首次访问时解决此问题?
其次,如何使cookie永不过期? (或者只是给超时一个很大的数字?还是其他解决方案?)
请帮助!
谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。