表单身份验证-子文件夹Web.配置不工作

本文关键字:配置 工作 Web 文件夹 身份验证 表单 | 更新日期: 2023-09-27 18:09:58

我需要一个区域在我的网站,只有某些用户可以查看。

我所做的是创建一个视频文件夹。文件夹下面有文件夹一个叫Login,另一个叫WatchVid。在登录文件夹中,我有一个名为Login.aspx的页面。一旦用户登录,他们将转到/WatchVid/Watch.aspx如下图所示:

    Video Folder
      |
      | 
      ----> Login Folder
      |        |
      |        |  
      |        ---> Login.aspx 
      |
      ----> WatchVid Folder
                 |
                 |
                 --->Watch.aspx                  

我在我的WatchVid中有以下web配置文件,只允许具有VidUser的角色查看页面:

    <?xml version="1.0"?>
    <configuration>
    <system.web>
     <authorization>
        <allow roles="VidUser" />
        <deny users="?" />
     </authorization>
    </system.web>
    </configuration>

我发现即使我改变:

      <allow roles="VidUser" /> 
     To: 
      <allow roles="VidUser1" />

我仍然可以得到这个手表。aspx页即使我没有VidUser1的角色。

我做错了什么吗?

就像下面的参考一样,是我在用户使用他们的userid pwd:

登录时使用的代码
    protected void btnLogin_Click(object sender, EventArgs e)
    {
        if (Roles.IsUserInRole(txtUserName.Text, "StreamingUser"))
         {
             const string url = "~/Video/WatchVid/Watch.aspx";
             Response.Redirect(url);
         }

Stephan,我的根网上有以下内容。配置页面,但仍然让我进入手表。aspx页面:

        <location path="Video/WatchVid">
        <system.web>
          <authorization>
             <allow roles="StreamingUser1dfdfdfd" />
             <deny users="?" />
         </authorization>
       </system.web>
       </location>

请注意我是如何创建StreamingUser1dfdfdfd的虚拟角色来检查它的。我还能找到那块手表。aspx页面。

迈克:

我在我的WatchVid文件夹下有以下内容,但当我使用*时获得访问错误-有任何想法吗?:

     <?xml version="1.0"?>
     <configuration>
     <system.web>
     <authorization>
        <allow roles="StreamingUser" />
        <deny users="*" />
      </authorization>
     </system.web>
     </configuration>

我得到以下消息:未授权:由于服务器配置导致登录失败。根据您提供的凭据和Web服务器上启用的身份验证方法,验证您是否有权查看此目录或页面。请与Web服务器管理员联系以获得其他帮助。

请记住,这仍然有效:

     protected void btnLogin_Click(object sender, EventArgs e)
     {
       if (Roles.IsUserInRole(txtUserName.Text, "StreamingUser"))
       {
         const string url = "~/Video/WatchVid/Watch.aspx";
         Response.Redirect(url);
       }

但现在它不让我通过手表。

表单身份验证-子文件夹Web.配置不工作

你需要改变

<deny users="?"/>

<deny users="*"/>

*表示拒绝所有人访问。然后你的allow roles让合适的角色进入。

?表示拒绝未经认证的用户访问。由于您已经过身份验证,因此不会拒绝您。

在最外层(根)web使用位置标签。配置文件。

编辑以显示我们应用程序中的一个(改编的)工作示例:

<authorization>
   <allow users="?" />
</authorization>
<location path="Login.aspx">
  <system.web>
   <authorization>
      <allow users="*" />
   </authorization>
  </system.web>
</location>
<location path="Videos/WatchVid">
  <system.web>
   <authorization>
      <allow roles="VidUser" />
      <deny users="?" />
   </authorization>
  </system.web>
</location>