我应该如何检查用户是否在 MVC5 中经过身份验证?

2024-02-16

我见过以下两个可访问的布尔值:

  • System.Web.Mvc.Controller.User.Identity.IsAuthenticated
  • System.Web.Mvc.Controller.Request.IsAuthenticated

这些有区别吗。他们似乎都做同样的事情,所以我不确定该使用哪一个。

我想做的是:

@if (User.Identity.IsAuthenticated) {
  if (User.IsInRole("Admin")) {
    @Html.ActionLink("Admin", "AdminController")        
  }
}

or

@if (Request.IsAuthenticated) {
  if (User.IsInRole("Admin")) {
    @Html.ActionLink("Admin", "AdminController")        
  }
}

上述任何一个都同样有效吗?


没有什么区别。唯一的区别是,如果用户未经过身份验证User.Identity可能为 null,因此您可能会得到 NRE,而使用第二种方法时,内部会对此进行检查并且更安全。

以下是如何Request.IsAuthenticated方法实现:

public bool IsAuthenticated
{
    get
    {
        return this._context.User != null && 
               this._context.User.Identity != null &&
               this._context.User.Identity.IsAuthenticated;
    }
}

基本上它比第一个安全一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该如何检查用户是否在 MVC5 中经过身份验证? 的相关文章

随机推荐