我花了好几个小时来解决这个问题,但我不能。
当我在网站项目中工作时,在登录页面中对用户进行身份验证时,我使用FormsAuthentication.RedirectFromLoginPage
将用户重定向到主页,并且我在Request.Cookies中找到了ASPXAUTH
cookie。但在Web应用程序项目中,我做了同样的事情,但没有工作。看起来很奇怪。重定向FormsAuthentication.RedirectFromLoginPage
页面后,ASPXAUTH
中找不到Request.Cookies[FormsAuthentication.FormsCookieName]
Cookie。
我错过了什么......?
为什么在Request.Cookies中找不到ASPXAUTH
?
请在这个问题上帮助我。
提前致谢。
答案 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;