我是ASP.NET MVC的新手,我经常遇到以下代码:
[Authorize]
public ActionResult Index()
{
if (Request.IsAuthenticated)
// ...
}
if语句真的有必要吗?有人可以解释两者之间的差异吗?
答案 0 :(得分:6)
不需要if
检查。 [Authorize]
属性可以做到这一点,实际上它通过检查角色成员资格来做更多事情。查看AuthorizeAttribute
on GitHub的实施情况,了解其工作原理。
答案 1 :(得分:3)
Authorize
可以检查角色成员资格。在这种情况下,if
也是多余的。
这不是ASP.NET MVC的常见模式,你应该问谁编写代码。
这只会让测试变得更难。
答案 2 :(得分:1)
[Authorize]
属性意味着用户必须登录才能调用控制器端点。
Request.IsAuthenticated
对于经过身份验证的用户运行代码非常有用,例如
public ActionResult Index()
{
somecodethatrunsforeverybody();
if (Request.IsAuthenticated)
{
codethatrunsforauthenticatedusers();
}
}
所以用[Authorize]
装饰一个动作然后包裹整个内容if (Request.IsAuthenticated)
是没有意义的。但是根据我的例子它确实有用。