ASP.NET MVC3:如何在运行控制器代码之前确保登录?

时间:2011-11-15 14:35:52

标签: asp.net-mvc login

我只想确保在运行任何代码之前登录。

我找到了User.Identity.IsAuthenticated可以用于布尔值来检查登录。但是,如果我重定向,它仍会运行代码,而且我必须把它放在任何地方?

在ROR中,我们做了一个before_filter选项,在每个控制器的顶部检查,否则不会运行它。

有人可以指导我如何做到这一点。

3 个答案:

答案 0 :(得分:4)

您可以使用AuthorizeAttribute

  

使用AuthorizeAttribute标记操作方法时,可以访问该方法   action方法仅限于经过身份验证的用户   授权。如果使用属性标记控制器,则执行所有操作   控制器中的方法受到限制。

     

Authorize属性允许您指明授权   限制为预定义角色或个人用户。这给了你   高度控制谁有权查看任何页面   该网站。

     

如果未经授权的用户尝试访问标记为的方法   在Authorize属性中,MVC框架返回401 HTTP状态   码。如果站点配置为使用ASP.NET窗体身份验证,   401状态代码导致浏览器将用户重定向到   登录页面。

例如:

[Authorize]
public ActionResult DoSomething()
{
    // ...
}

答案 1 :(得分:2)

在控制器类的顶部,写下: -

[Authorize]
public class StoreManagerController : Controller

答案 2 :(得分:2)

使用授权属性。

[Authorize]
public ActionResult About()
{
    return View();
}