我对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]
装饰动作然后包装整个内容是没有意义的。 但是,根据我的示例,它确实有用。