我见过以下两个可访问的布尔值:
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(使用前将#替换为@)