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

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

2014-07-10 十有三 0 浏览:14772 .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#如何根据输入的行数打印出由*星号组成的三角形

相关文章
  • C#解决IIS域名批量绑定
  • 总结Visual Studio Community 2013的特点与其他VS版本的区别
  • ASP.NET中Page设置ValidateRequest="false" 无效
  • 分享一个MIME Types大全网址
  • Discuz!NT 图像因存在错误而无法显示
  • Discuz!NT Flash无法上传头像,点击上传后无任何反应
发表评论
记住昵称

文章分类

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

文章标签

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

热门文章

  • 解决IE11安装升级失败和在安装前需要更新的问题
  • VS重构重命名的快捷键
  • 林蛋大与楚中天,朱肚皮与朱月坡
  • Win10中如何设置Hyper-V的网络让虚拟机也能上外网
  • Windows Server 2012无法安装 .NET3.5-安装角色或功能失败,找不到源文件

推荐文章

  • 总结IIS中使用ARR一些要注意的地方和经验-例如遇到重写规则无效的情况
  • 记录一个starbound解放双手的自动挖矿技巧-使用系统自带的鼠标设置自动按住左键
  • jquery ajax error函数和及其参数详细说明
  • SQL 获取下一条数据
  • ASP.NET .exclude 是什么文件?

最新评论

  • 能不能帮我一下QQ号是。2946145656
  • 非常感谢~帮大忙了
  • 我的版本没有这个选项,微软太霸道了
  • 我想请问一下,我用的也是iis跟url rewri
  • 不错,解决问题了. 不知道这个iis日志,能

友情链接

  • Passingwind的博客
  • 坤哥网
  • 码友网
  • Wil的博客

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