如何允许匿名访问一个控制器?

时间:2011-11-24 12:49:26

标签: asp.net-mvc model-view-controller asp.net-mvc-2

我正在使用MVC 2.0进行表单身份验证。我想允许公共访问一个名为“Logout”的控制器。目前,每当我浏览它时,我都会被退回登录。

<authentication mode="Forms">
  <forms loginUrl="Login/Login"  
         protection="All" timeout="30"
         name=".ASPXAUTH" 
         path="/" 
         requireSSL="false" 
         slidingExpiration="true"
         defaultUrl="Token/Create" 
         cookieless="UseDeviceProfile" 
         enableCrossAppRedirects="false" />
</authentication>

<!-- Deny Anonymous users. -->
<authorization>
  <deny users="?" />
</authorization> 

<小时/> 更新:我正在使用WIF,每次用户到达注册页面(匿名访问)时,我都需要将其签名,以确保他们在令牌中拥有最新的声明,而不仅仅是允许使用陈旧的令牌。他们的索赔通过请求进入注册页面。

2 个答案:

答案 0 :(得分:3)

正如SLaks所提到的,不需要非登录用户来访问Logout操作。但是,如果要启用对控制器/操作的匿名访问,则必须在Web中启用它.Config:

<location path="~/Logout">
  <system.web>
    <authorization>
      <allow users="?" />
    </authorization>
  </system.web>
</location>

纯MVC应用程序的一个更好的方法是使用Authorize属性并启用对web.config中所有用户的访问。

答案 1 :(得分:2)

最好在控制器和/或控制器操作上使用属性,而不是在config中指定授权。 [授权]您想要的操作仅限于经过身份验证的用户,然后没有该属性的操作可以公开使用。