0

我需要在我的网站中设置一个只有特定用户可以查看的区域。

我所做的是创建一个视频文件夹。在该文件夹下,我有一个名为 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" />

即使我没有 VidUser1 的角色,我仍然可以访问 Watch.aspx 页面。

难道我做错了什么?

正如下面的参考是我在用户使用他们的用户 ID 登录后使用的代码,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);
         }

斯蒂芬,我的根 web.config 页面中有以下内容,但仍然让我进入 Watch.aspx 页面:

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

请注意我是如何创建一个 StreamingUser1dfdfdfd 的虚拟角色来检查它的。我仍然能够访问 Watch.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);
       }

但是现在它不会让我进入 Watch.aspx 页面,因为我得到一个错误。

4

2 回答 2

0

在最外层(根)web.config 文件中使用位置标记。

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

<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>
于 2013-04-19T15:07:59.770 回答
0

你会想要改变

<deny users="?"/>

<deny users="*"/>

*意味着它被拒绝给每个人。然后,您allow roles可以担任正确的角色。

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

于 2013-04-19T15:46:47.333 回答