MVC3 don';不允许未登录的用户访问任何控制器,但允许打开

本文关键字:控制器 任何 访问 许打开 用户 don 不允许 登录 MVC3 | 更新日期: 2023-09-27 18:29:12

我希望当一个未登录的用户试图访问任何不允许非登录用户访问的控制器时,用户get会被重定向到一个控制器来处理登录。我怎样才能以最好的方式做到这一点?我觉得以某种方式在Global.asax.cs上做这件事会很好,对吧?

MVC3 don';不允许未登录的用户访问任何控制器,但允许打开

使用[授权]属性。它可以很好地与表单身份验证配合使用,我想这就是您正在使用的。

在保护ASP.NET MVC3应用程序时,最简单的步骤是要求用户登录以访问特定的URLS。这是通过在控制器或操作上使用Authorize筛选器[Authorize()]来完成的。

http://build.mt.gov/2011/10/27/aspnet-mvc3-and-the-authorize-attribute.aspx

自定义授权属性:

http://www.diaryofaninja.com/blog/2011/07/24/writing-your-own-custom-aspnet-mvc-authorize-attributes

从基本控制器继承所有控制器。基控制器应该在类声明之上有一个注释。您可以使用.NET注释,如[授权],也可以直接实现自己的注释。

例如

[Secure()]
public class BaseController : Controller
{
   // Action methods
}

然后,您将创建从基本控制器派生的控制器:

[Secure(false)]
public class NonSecureController: BaseController
{
   // Action methods
}

您将必须实现一个简单的注释,您可以向该注释传递一个标志来指示用户是否需要登录。

在开发自定义属性(注释)时,可以将其范围指定为类或方法。这意味着您可以对权限逻辑进行更精细的控制。