我有一个应用程序可以对特定用户(东)进行身份验证,并将其重定向到各自的页面(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
如何解决这个问题?
答案 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文件,则可以跳过位置标记。