我在设置AffiliateLogin
的控制器中有Principal
函数
行principal.User = user;
实际上是存储Principal的行。
但是在我重定向到另一个控制器并测试我的AuthorizeWithRolesAttribute
属性后,主体被重置
这是登录后的一秒钟,您可以看到红色箭头:
这是存储它的功能
我做错了什么?
谢谢
public JsonResult AffiliateLogin(string email, string password)
{
if (ModelState.IsValid)
{
Affiliate user = api.GetUserByCredencials<Affiliate>(email, password);
if (user != null)
{
IIdentity identity = new UserIdentity(true,user.Email);
UserPrincipal principal = new UserPrincipal(identity, new string[] {"Affiliate"});
principal.User = user;
HttpContext.User = principal;
return Json("Login success");
}
}
return Json("Fail To Login");
}
答案 0 :(得分:0)
主要属性在Web请求之间无法生存。重定向后,您必须在下一个请求中再次设置它。
答案 1 :(得分:0)
如果您正在进行自定义身份验证/表单身份验证,则应调用
FormsAuthentication.SetAuthCookie
来自浏览器的下一个http与该cookie,Asp.net将处理cookie并设置 现任索赔负责人。所以你可以检查
var principal = ClaimsPrincipal.Current; //normally this reverts to Thread.CurrentPrincipal,
这是一个学习更多的好地方 http://msdn.microsoft.com/en-us/library/system.security.claims.claimsprincipal.current