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

C# 如何允许匿名用户访问MVC中的某个给定页面?,c#,asp.net-mvc,forms-authentication,C#,Asp.net Mvc,Forms Authentication,我已在ASP.NET MVC web应用程序中启用表单身份验证。我想只允许匿名用户访问某些特定页面,例如Register.cshtml。通过这样做,我可以允许从我的根web.config访问我的CSS文件 <location path="Content/Site.css"> <system.web> <authorization> <allow users="*"/> </aut

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

<location path="Content/Site.css">
    <system.web>
        <authorization>
            <allow users="*"/>
        </authorization>
    </system.web>
</location>


现在我想允许匿名访问其他页面,如主页和注册。有人知道如何实现这一点吗?

在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中,我有以下授权

<authorization>
    <deny users ="?"/>
</authorization>
由于无法正常工作,我不得不删除对Web.config的授权,并在所有控制器中设置了

[Authorize]

在声明类之前,请确保正确工作。

:如果是这种情况,为什么我看不到Register.cshtml。当我只启用表单身份验证时。@JED不确定,您可能需要用更多的上下文来补充您的问题,以解决这个问题。您是否遇到任何错误,或者在尝试访问注册表视图时会发生什么情况?我想我知道问题所在。我拒绝所有用户访问我的配置谢谢,这是唯一对我有效的事情!非常感谢,不客气,我希望这些信息对更多的开发者有用。
[Authorize]