我正在使用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,每次用户到达注册页面(匿名访问)时,我都需要将其签名,以确保他们在令牌中拥有最新的声明,而不仅仅是允许使用陈旧的令牌。他们的索赔通过请求进入注册页面。
答案 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中指定授权。 [授权]您想要的操作仅限于经过身份验证的用户,然后没有该属性的操作可以公开使用。