我正在纠结这个“愚蠢”的问题。我尝试查看用户是否在我的操作中经过身份验证。我习惯这样做,HttpContext.User.Identity.IsAuthenticated
但它总是返回错误。我研究了AuthorizeAttribute
他们使用的代码
protected virtual bool AuthorizeCore(HttpContextBase httpContext)
{
//removed code...
IPrincipal user = httpContext.User;
if (!user.Identity.IsAuthenticated)
{
return false;
}
//removed code....
}
所以我的问题和困惑是为什么这在我的行动中不起作用?
我使用 Simplemembership,这是我使用的设置web.config
<roleManager enabled="true" defaultProvider="SimpleRoleProvider">
<providers>
<clear />
<add name="SimpleRoleProvider"
type="WebMatrix.WebData.SimpleRoleProvider,
WebMatrix.WebData" />
</providers>
</roleManager>
<membership defaultProvider="SimpleMembershipProvider">
<providers>
<clear />
<add name="SimpleMembershipProvider"
type="WebMatrix.WebData.SimpleMembershipProvider,
WebMatrix.WebData" />
</providers>
</membership>
我在模板 mvc4 中使用默认登录
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel model, string returnUrl)
{
if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
{
return RedirectToLocal(returnUrl);
}
// If we got this far, something failed, redisplay form
ModelState.AddModelError("", "The user name or password provided is incorrect.");
return View(model);
}
我在我的授权属性中使用它并且它有效,所以我的问题是有什么区别?
protected override bool AuthorizeCore(System.Web.HttpContextBase httpContext)
{
//code here....
if (httpContext.User.Identity.IsAuthenticated)
return true;
return true;
}
这就是我在我的行动中使用的
public ActionResult Index()
{
//removed code....
if (HttpContext.User.Identity.IsAuthenticated)
{
return View();
}
// revmoved code...
return View();
}