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

关闭一个子目录的ASP.Net WebForms身份验证

发布时间:2020-12-15 23:52:59 所属栏目:asp.Net 来源:网络整理
导读:我有一个包含WebForms和MVC页面的大型企业应用程序.它具有我不想更改的现有身份验证和授权设置. WebForms身份验证在web.config中配置: authentication mode="Forms" forms blah... blah... blah / /authentication authorization deny users="?" / /authori
我有一个包含WebForms和MVC页面的大型企业应用程序.它具有我不想更改的现有身份验证和授权设置.

WebForms身份验证在web.config中配置:

<authentication mode="Forms">
  <forms blah... blah... blah />
 </authentication>

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

到目前为止相当标准我有一个REST服务,这是这个大型应用程序的一部分,我想使用HTTP身份验证代替这一个服务.

因此,当用户尝试从REST服务获取JSON数据时,它将返回HTTP 401状态和WWW验证标头.如果他们以正确形式的HTTP授权响应进行响应,则可以让它们进入.

问题是WebForms会在较低的级别覆盖这一点 – 如果您返回401(未授权),它会覆盖302(重定向到登录页面).这在浏览器中没有问题,但对于REST服务来说却没有用.

我想关闭web.config中的身份验证设置,覆盖“rest”文件夹:

<location path="rest">
  <system.web>
   <authentication mode="None" />
   <authorization><allow users="?" /></authorization>
  </system.web>
 </location>

授权位工作正常,但验证行(< authentication mode =“None”/>)会导致异常:

It is an error to use a section registered as allowDefinition=’MachineToApplication’ beyond application level.

我在应用程序级别进行配置 – 它位于根web.config – 而且该错误是针对子目录中的web.configs.

如何覆盖身份验证,以便网站的其余所有网站使用WebForms身份验证,而这一个目录不使用?

这类似于另一个问题:401 response code for json requests with ASP.NET MVC,但是我并不是在寻找同样的解决方案 – 我不想仅仅删除WebForms身份验证,并在全球添加新的自定义代码,所涉及的风险和工作都很大.我想改变配置中的一个目录.

更新

我想设置一个单一的Web应用程序,并且我想要所有WebForms页面和MVC视图使用WebForms身份验证.我想要一个目录使用基本的HTTP身份验证.

请注意,我在谈论认证,而不是授权.我想要使??用用户名& HTTP头中的密码,我想要WebForm& MVC页面附带来自.Net的身份验证cookie – 无论哪种情况,我们的DB都会进行授权.

我不想重写WebForms身份验证并滚动我自己的cookie – 这是向应用程序添加HTTP授权REST服务的唯一方法似乎是可笑的.

我不能添加额外的应用程序或虚拟目录 – 它必须是一个应用程序.

解决方法

如果“休息”仅仅是您根目录中的一个文件夹,那么几乎就在这里:
删除认证线,即
<location path="rest">
  <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
  </system.web>
 </location>

或者,您可以添加一个web.config到您的休息文件夹,只需这样:

<system.web>
     <authorization>
          <allow users="*" />
     </authorization>
</system.web>

检查this.

(编辑:李大同)

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

    推荐文章
      热点阅读