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永不过期? (或者只是给超时一个很大的数字?还是其他解决方案?) 请帮助! 谢谢。     
已邀请:

要回复问题请先登录注册