/*十有三博客*/
  • 首页
  • 关于本站
  • 网站地图
  • RSS订阅

解决ASP.NET MVC AllowAnonymous属性无效导致无法匿名访问控制器的问题

2014-07-10 十有三 0 浏览:1万+ .NET技术 ASP.NET MVC

在ASP.NET MVC项目中,一般都要使用身份验证和权限控制,但总有部分网页是可以匿名访问的。使用AllowAnonymous属性就可以指定需要匿名访问的控制器,从而跳过身份验证。

但是今天却遇到一个AllowAnonymous属性失效的问题,导致声明了该属性控制器的操作方法无法匿名访问,需要登陆后才可访问。后经过排查,是由于配置文件属性设置的问题。

一般是这样声明这个属性的:

[AllowAnonymous]
public ActionResult Index()
{
   return View();
}

声明了允许匿名访问后,用户访问该控制器下的Index操作方法时,就无需进行身份验证了

(PS:匿名属性启用的前提是网站启用了form身份验证)。

但是如果有发现声明了该属性后,却无法访问属性设置下的Action操作方法,反而跳转到身份验证的登陆页面。这个时候可以按下面步骤排除问题:

  1. 首先检查下网站的应用程序文件Global.asax是否有做过身份验证和跳转操作,要注意每个事件里所做的特殊处理
  2. 如果Global.asax没有做任何处理的话,那么接下来检测控制器的构造函数是否有做过身份验证和跳转处理,控制器所继承的类是不是有做过相关处理。
  3. 最后就是检查Web.config这个网站配置文件了。我的问题是因为在Web.config中,设置了authorization元素,并且设置deny users="?"(拒绝所有匿名用户访问)。由于authorization的优先级大于AllowAnonymous属性,所以程序先判断deny user="?" 拒绝掉匿名用户后,就会跳过Action操作方法中的所有身份验证属性,导致网站自动跳转到身份验证的登陆页面。具体配置文件代码:
    <authorization>      
        <deny users="?" />
    </authorization>
    

    将配置文件的此段配置删除后,就可以正常的匿名访问有声明允许匿名访问属性的Action操作方法了。


另外要说的一点,如果在ASP.NET MVC中已经使用了form身份验证,那么最好不要在配置文件中设置authorization元素,身份验证控制应该使用Authorize属性和AllowAnonymous属性。


作者:十有三

出处:https://shiyousan.com/post/635406153786208233

版权声明:本文采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。欢迎转载本文,转载请声明出处或保留此段声明。


  • 上一篇: (译)在 ASP.NET中使用 XML-RPC 进行ping
  • 下一篇: C#如何根据输入的行数打印出由*星号组成的三角形

相关文章
  • 修改Discuz!NT源码出现'List' is an ambiguous reference(即不明确的引用)错误
  • ASP.NET 动态设置 HTTP 500 引发内部服务器错误
  • Visual Studio Community 2013英文版安装中文语言包步骤
  • asp.net mvc 使用XmlWriter输出XML未调用Close方法造成错误
  • 在唯一密钥属性“fileExtension”设置为“.”时,无法添加类型为“mimeMap”的重复集合项
  • ASP.NET MVC 5 学习笔记之FilterConfig类
发表评论
记住昵称

文章分类

.NET技术 123 数据库 24 Web前端 21 网站建设运维 37 操作系统与应用 66 程序猿日常 11 开发工具 12 其他随笔 13

文章标签

ASP.NET ASP.NET MVC C# CSS HTML IIS Javascript Linux MongoDB MySql SQL SQL Server Visual Studio Windows系统 版本控制系统 插件工具 服务器 搞笑娱乐 好文分享 软件应用 生活知识 手机问题 随笔 网络知识 网站设计优化 网站维护 养生保健 异常处理 硬件设备 游戏攻略

热门文章

  • IIS8如何安装和使用URL重写工具-URL Rewrite
  • 林蛋大与楚中天,朱肚皮与朱月坡
  • 解决IE11安装升级失败和在安装前需要更新的问题
  • VS重构重命名的快捷键
  • Windows Server 2012无法安装 .NET3.5-安装角色或功能失败,找不到源文件

推荐文章

  • GitHub Desktop下载失败 无法启动应用程序
  • VS(Visual Studio)按键失灵无法按回车
  • MIME 类型大全(收集常用的MIME Type)
  • VS重构重命名的快捷键
  • Windows10如何下载OneNote 2016

最新评论

  • 可乐可乐,谢谢谢谢谢*10086
  • 按上边的2个步骤,没有解决问题。 最后是右键
  • 不错
  • 专门过来看的,讲的很好,学到了很多。
  • 下面的隐藏按钮勾上 就不会出现了

友情链接

  • Passingwind的博客
  • 坤哥网
  • 码友网
  • 王政乔|中国

知识共享许可协议 CC BY-SA 4.0本站作品采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。
闽ICP备15003702号