Authorize和Request.IsAuthenticated之间的区别

时间:2013-10-18 14:52:54

标签: c# asp.net-mvc-4 authentication authorization

我是ASP.NET MVC的新手,我经常遇到以下代码:

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

if语句真的有必要吗?有人可以解释两者之间的差异吗?

3 个答案:

答案 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)是没有意义的。但是根据我的例子它确实有用。