为什么在Request.Cookies [FormsAuthentication.FormsCookieName]中找不到ASPXAUTH cookie?

时间:2013-09-12 13:06:53

标签: c# asp.net cookies forms-authentication

我花了好几个小时来解决这个问题,但我不能。

当我在网站项目中工作时,在登录页面中对用户进行身份验证时,我使用FormsAuthentication.RedirectFromLoginPage将用户重定向到主页,并且我在Request.Cookies中找到了ASPXAUTH cookie。但在Web应用程序项目中,我做了同样的事情,但没有工作。看起来很奇怪。重定向FormsAuthentication.RedirectFromLoginPage页面后,ASPXAUTH中找不到Request.Cookies[FormsAuthentication.FormsCookieName] Cookie。

我错过了什么......?

为什么在Request.Cookies中找不到ASPXAUTH

请在这个问题上帮助我。

提前致谢。

1 个答案:

答案 0 :(得分:1)

我们为项目使用了mojoportal cms,因此当我设置FormsAuthentication cookie时,cms还会检查其数据库中的用户名。在数据库中添加用户名后,问题就解决了。

如果您使用 https ,请检查表单身份验证中的RequireSSL = true已在web.config中使用。

<forms name=".mojochangeme"  protection="All" timeout="20160" path="/" cookieless="UseCookies" requireSSL="true" />

我正在为我的项目使用两个数据库,如果我将用户名添加到另一个数据库,即mojoportal数据库,那么对我来说这不是一种有效的方法。

所以我使用了CustomPrincipal类,它将取代FormsAuthentication,但不会设置cookie。

CustomPrincipal类:

public class CustomPrincipal:IPrincipal
    {
        public IIdentity Identity { get; set; }
        public bool IsInRole(string role) { return false; }
        public CustomPrincipal(string username)
        {
            this.Identity = new GenericIdentity(username);
        }
    }

用于在HttpContext中设置当前用户:

CustomPrincipal newUser = new CustomPrincipal(username);
                    HttpContext.Current.User = newUser;