我有两个登录页面。一个用于管理员用户,一个用于客户。
他们都执行以下代码(授权后)将cookie添加到Response
。这两个页面然后重定向到提供的URL(我不在这里进行重定向,因为我对管理员做了一些额外的检查)
public static string SetAuthCookie<T>
(this HttpResponse responseBase, string name, bool rememberMe, T userData)
{
/// In order to pickup the settings from config, we create a default cookie
/// and use its values to create a new one.
var cookie = FormsAuthentication.GetAuthCookie(name, true);
var ticket = FormsAuthentication.Decrypt(cookie.Value);
var newTicket = new FormsAuthenticationTicket(
ticket.Version,
ticket.Name,
ticket.IssueDate,
ticket.Expiration,
true,
Newtonsoft.Json.JsonConvert.SerializeObject(userData),
ticket.CookiePath
);
var encTicket = FormsAuthentication.Encrypt(newTicket);
/// Use existing cookie. Could create new one but would have to copy settings over...
cookie.Expires = (rememberMe ? DateTime.Now.AddDays(62) : DateTime.MinValue);
cookie.Value = encTicket;
responseBase.Cookies.Set(cookie);
return FormsAuthentication.GetRedirectUrl(name, true /*This Is Ignored*/);
}
管理
现在管理员按照它说的做了。添加cookie并重定向到管理员欢迎屏幕。
客户
客户登录区域没有做同样的事情(见下面的screengrab)。
答案 0 :(得分:0)
Soooo ......太傻了。
我忘了排除([JsonIgnore]
)获取一些额外数据的属性(设置cookie不需要)。这被包括在内,显然,我的cookie太大而无法保存。
糟糕。