如何允许匿名用户访问MVC中的某个给定页面?

我在ASP.NET MVC Web应用程序中启用了表单身份validation。 我想允许匿名用户只访问某些特定页面,例如Register.cshtml。 通过这样做,我能够允许从我的根web.config访问我的CSS文件。

       

现在我想允许匿名访问其他页面,如Home和Register。 有人知道怎么做到这一点吗?

在MVC中,您通常使用[Authorize]属性来管理授权。 使用该属性打包的控制器或单个操作将要求用户授权以访问它们 – 匿名用户可以使用所有其他操作。

换句话说,黑名单方法,其中需要授权的操作使用[Authorize]为匿名用户列入黑名单 – 所有操作(未使用属性打扮)都可用。

更新:

使用MVC4,引入了一个新属性,即[AllowAnonymous]属性。 与[Authorize]属性一起,您现在可以采用白名单方法。 白名单方法是通过使用[Authorize]属性修整整个控制器来完成的,以强制授权该控制器内的所有操作。 然后,您可以使用[AllowAnonymous]属性修改不需要授权的特定操作,从而仅列出那些操作的白名单。 通过这种方法,您可以确信您不会偶然忘记使用[Authorize] ,将其留给任何人,即使它不应该。

您的代码可能是这样的:

 [Authorize] public class UserController : Controller { [AllowAnonymous] public ActionResult LogIn () { // This action can be accessed by unauthorized users } public ActionResult UserDetails () { // This action can NOT be accessed by unauthorized users } } 

在Web.config中,我有以下授权

    

这导致了

 [AllowAnonymous] 

不能正常工作,我不得不删除我的Web.config授权,并在所有控制器中放置该行

 [Authorize] 

在宣布课程之前,要正常工作。