我们在项目中使用了 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;