3

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

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

我错过了什么吗..?

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

请在这个问题上帮助我。

提前致谢。

4

1 回答 1

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;
于 2013-12-20T05:56:06.397 回答