授权和请求之间的区别



我对MVC相对较新 ASP.NET 我经常遇到以下代码:

[Authorize]
public ActionResult Index()
{
  if (Request.IsAuthenticated)
  // ...
}

if语句真的有必要吗?有人可以解释一下两者之间的区别吗?

不需要if检查。[Authorize]属性可以做到这一点,实际上,它也通过检查角色成员身份来执行更多操作。在 GitHub 上查看 AuthorizeAttribute 的实现,了解它在幕后是如何工作的。

>Authorize可以检查角色成员身份。在这种情况下,if也是多余的。

这不是 ASP.NET MVC的常见模式,您应该询问谁编写了代码。

这只会使测试变得更加困难。

[Authorize] 属性意味着用户必须登录才能调用控制器终结点。

Request.IsAuthenticated对于为经过身份验证的用户连续运行代码很有用,例如

public ActionResult Index()
{
  somecodethatrunsforeverybody(); 
  if (Request.IsAuthenticated)
  {
    codethatrunsforauthenticatedusers();
  }
}

因此,如果if (Request.IsAuthenticated),用[Authorize]装饰动作然后包装整个内容是没有意义的。 但是,根据我的示例,它确实有用。

最新更新