2

我对 ASP.NET MVC 比较陌生,我经常遇到以下代码:

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

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

4

3 回答 3

6

if不需要检查。该[Authorize]属性可以做到这一点,实际上它还通过检查角色成员资格来完成更多工作。查看AuthorizeAttribute GitHub 上的实现,看看它是如何在幕后工作的。

于 2013-10-18T14:55:41.673 回答
3

Authorize可以检查角色成员资格。在这种if情况下也是多余的。

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

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

于 2013-10-18T14:54:55.173 回答
1

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

Request.IsAuthenticated对于经过身份验证的用户有条件地运行代码很有用,例如

public ActionResult Index()
{

  somecodethatrunsforeverybody(); 
  if (Request.IsAuthenticated)
  {
    codethatrunsforauthenticatedusers();
  }

}

因此,[Authorize]如果if (Request.IsAuthenticated). 但是,根据我的示例,它确实有用。

于 2013-10-18T15:03:04.673 回答