加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

子文件夹中忽略ASP.NET web.config授权设置

发布时间:2020-12-15 20:52:02 所属栏目:asp.Net 来源:网络整理
导读:我正在使用asp.net mvc 2和vs 2008. 我正在尝试使用表单授权制作网站.当我试图限制访问某些页面时,我正在使用asp.net管理工具.例如,我创建了规则,拒绝访问整个网站的匿名用户.正如预期的那样,管理工具在根web.config文件中添加了以下部分: authorization de
我正在使用asp.net mvc 2和vs 2008.

我正在尝试使用表单授权制作网站.当我试图限制访问某些页面时,我正在使用asp.net管理工具.例如,我创建了规则,拒绝访问整个网站的匿名用户.正如预期的那样,管理工具在根web.config文件中添加了以下部分:

<authorization>
   <deny users="?" />
  </authorization>

当我在某个子文件夹中执行相同的操作时,例如%ApplicationRoot%/ View / Protected,管理工具,如预期的那样,在所提到的子文件夹中添加web.config文件,使用以下代码:

<configuration>
<system.web>      
    <authorization>
        <deny users="UserName" />
    </authorization>
</system.web>

theese文件之间的主要区别在于root web.config授权部分有一些效果(一般来说,它按计划工作 – 拒绝来自整个网站的所有未经身份验证的用户).但是子文件夹web.config授权部分根本没有任何效果.
我发现然后添加到root配置文件,代码如下

<location path="Protected">
  <authorization>
    <deny users="UserName" />
   </authorization>
 </location>

做得很好 – 它按计划拒绝%UserName%访问所有视图,位于%ApplicationRoot%/ View / Protected Folder中.
这个行为与卡西尼和iis相似,我试过这两个.

主要的问题是我需要善良的管理工具来完成工作,所以我要求任何有关问题的帮助 – 为什么当web.config位于子文件夹中时授权部分不起作用?

附:我试图在< authorization>之间放置错误的代码和< / authorization>在子文件夹的web.config中:

<authorization>
    asdfg
   </authorization>

没有效果.由于某些问题,整个部分可能会被忽略?

P.P.S.同一文件中授权部分的代码不正确会导致错误

解决方法

您的问题是您的应用程序不是传统的ASP.NET Web窗体应用程序.
你想要做的是在Web Forms中完美运行,但在MVC中却不行.

在MVC世界中,当浏览器请求页面/ People / SmartList时,它不一定会从您的项目中显示/People/SmartList.cshtml.实际上,您的项目甚至根本没有/ People /文件夹.将由MVC引擎显示的视图(.cshtml文件)由路由确定.当它访问那些.cshtml文件时,MVC路由引擎不会查看你的web.config文件.现在,您可以看到为什么您的web.conig文件被忽略.

但你仍然可以进行授权.您应该使用[Authorize]属性并将其应用于适当的控制器操作方法,甚至应用于整个控制器类,而不是使用web.config文件.

[Authorize(Users="UserName")]
public ActionResult ShowRestrictedData()
    ...

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读