我在asp.net项目中创建了2个文件夹。 (帐户和管理员) 我想将Register.aspx页面限制为仅限管理员用户。
我的Login.aspx页面位于Account文件夹中,我在该文件夹中包含了一个web.config,其中包含以下代码;
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</configuration>
我已将Register.aspx文件放在AdminFolder中,并带有以下web.config代码。
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<allow roles="Admin"/>
<deny users="*"/>
</authorization>
</system.web>
</configuration>
在测试此方法时,我尝试通过直接转到Register.aspx文件来启动应用程序。正如所料,我被重定向到Login.aspx页面。
浏览器中显示的网址是
http://localhost:49319/Account/Login.aspx?ReturnUrl=%2fAdminFolder%2fRegister.aspx
我以管理员用户身份登录,当我的标题超链接更改为注销时,我可以看到我已登录。 (我也可以导航到Account中的其他文件以确认我已登录)但是,应用程序仍然在登录页面而不是重定向到Register.aspx页面。
我希望在登录成功后重定向到Register.aspx页面。
即使我以管理员用户身份登录,我也无法直接导航到Register.aspx页面。我被重定向到Login.aspx。
我确认(通过我的Sql Server数据库)我的测试用例中的用户是Admin角色。
有人能在这方面向我推进正确的方向吗?提前感谢您的时间和考虑。
答案 0 :(得分:0)
尝试将AdminFolder
中的web.config更改为:
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<allow roles="Administrator"/>
<deny users="?"/>
</authorization>
</system.web>
</configuration>
通常,这是数据库中显示的RoleName
。
答案 1 :(得分:0)
我看到了我的错误。我允许管理员角色,然后拒绝所有角色(包括管理员)。我应该在AdminFolder中使用以下内容
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<allow roles="Admin"/>
<deny users="?"/>
</authorization>
</system.web>
</configuration>
感谢所有反馈。