4

如何在 ASP.NET 应用程序中完全禁用 Forms 身份验证并将其替换为自定义身份验证模块?

我在 web.config 中将身份验证模式设置为 None

<authentication mode="None" />

并附上我自己的身份验证模块

  <add name="CustomAuthenticationModule" type="CustomAuthenticationModule, Auth"/>

我的自定义身份验证模块有

    application.AuthenticateRequest += new EventHandler(this.Application_AuthenticateRequest);
    application.PostAuthenticateRequest += new EventHandler(this.Application_PostAuthenticateRequest);
    application.AuthorizeRequest += new EventHandler(this.Application_AuthorizeRequest);

一切看起来都在工作,除了一件事......当我尝试访问安全页面时需要管理员角色

  <location path="SomePage.aspx">
    <system.web>
      <authorization>
        <allow roles="Admin"/>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>

我的处理程序没有捕获 AuthorizeRequest 事件。相反,我的请求将返回到浏览器

访问被拒绝。错误消息 401.2.:未经授权:由于服务器配置,登录失败。根据您提供的凭据和 Web 服务器上启用的身份验证方法,验证您是否有权查看此目录或页面。联系 Web 服务器的管理员以获得更多帮助

看起来其他处理程序处理了请求并返回未经授权的请求代码?我不是完全禁用了表单身份验证或错过了其他东西吗?

4

1 回答 1

0

如果您没有或集成 Windows 身份验证,请尝试启用匿名身份验证。如果您使用匿名身份验证,请确保 IIS 正在运行。

此外,检查文件夹的属性并确保添加了权限。

于 2013-08-10T03:07:03.183 回答