我对 ASP.NET MVC 比较陌生,我经常遇到以下代码:
[Authorize]
public ActionResult Index()
{
if (Request.IsAuthenticated)
// ...
}
if语句真的有必要吗?有人可以解释两者之间的区别吗?
我对 ASP.NET MVC 比较陌生,我经常遇到以下代码:
[Authorize]
public ActionResult Index()
{
if (Request.IsAuthenticated)
// ...
}
if语句真的有必要吗?有人可以解释两者之间的区别吗?
if
不需要检查。该[Authorize]
属性可以做到这一点,实际上它还通过检查角色成员资格来完成更多工作。查看AuthorizeAttribute
GitHub 上的实现,看看它是如何在幕后工作的。
Authorize
可以检查角色成员资格。在这种if
情况下也是多余的。
这不是 ASP.NET MVC 的常见模式,您应该询问谁编写了代码。
这只会使测试变得更加困难。
该[Authorize]
属性意味着用户必须登录才能调用控制器端点。
Request.IsAuthenticated
对于经过身份验证的用户有条件地运行代码很有用,例如
public ActionResult Index()
{
somecodethatrunsforeverybody();
if (Request.IsAuthenticated)
{
codethatrunsforauthenticatedusers();
}
}
因此,[Authorize]
如果if (Request.IsAuthenticated)
. 但是,根据我的示例,它确实有用。