授权用户无法访问其页面

时间:2011-06-13 18:42:04

标签: c# asp.net forms-authentication authorization

我有一个应用程序可以对特定用户(东)进行身份验证,并将其重定向到各自的页面(East.aspx)。无论何时访问授权页面(East.aspx),此页面都无法显示给未经授权的用户)它们被重定向到登录页面。

为了解决上述问题,我创建了角色,并将用户添加到Application_Start事件中的应用程序文件(Global.asax)中的特定角色。

void Application_Start(object sender, EventArgs e) 
{
    // Code that runs on application startup
    if (Roles.RoleExists("Browser") == false)
    {
        Roles.CreateRole("Browser");
        Roles.AddUserToRole("East","Browser");
    }
    if (Roles.RoleExists("Buyer") == false)
    {
        Roles.CreateRole("Buyer");
        Roles.AddUserToRole("B2","Buyer");
    }
    if (Roles.RoleExists("Seller") == false)
    {
        Roles.CreateRole("Seller");
        Roles.AddUserToRole("S1","Seller");
    }
    if (Roles.RoleExists("Admin") == false)
    {
        Roles.CreateRole("Admin");
        Roles.AddUserToRole("A1","Admin");
    }

}

在web.Config文件中我实现了以下

                

</authorization>

<roleManager enabled="true" defaultProvider="SqlRoleManager">
  <providers>
    <clear/>
    <add name="SqlRoleManager" type="System.Web.Security.SqlRoleProvider" connectionStringName="MyDbConn" applicationName="RolebasedApp"/>
    <add applicationName="RolebasedApp" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider"/>
  </providers>
</roleManager>
</system.web>

                                            

我只针对East User测试上述情况。我想确保我的应用程序名称是(我开始为不同用户创建网页的应用程序名称)。

完成所有这些操作后,当我运行我的应用程序并输入User“East”的正确凭据时。我导航到登录页面而不是East.aspx

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您需要一个如下所示的配置:

  <location path="East.aspx">
    <system.web>
      <authorization>
        <deny users="?" />         <!--Deny all Anonymous (not logged in) users-->
        <allow roles="east"/>        <!--Permit users in these roles-->
        <deny users="*"/>        <!--Deny all users-->
      </authorization>
    </system.web>
  </location>

如果east.aspx位于单独的文件夹中,并且该文件夹有自己的web.config文件,则可以跳过位置标记。