【发布时间】:2014-07-16 17:26:00
【问题描述】:
我正在开发一个现有的网站。我目前正在为站点进行基于角色的授权。我在 web.config 中给出了以下内容:
<system.web>
<authentication mode="Forms">
<forms name=".ASPXFORMSAUTH" loginUrl="Login.aspx" requireSSL="false" protection="All" slidingExpiration="true" path="/" timeout="240" cookieless="UseDeviceProfile" enableCrossAppRedirects="false" />
</authentication>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
<location path="Admin">
<system.web>
<authorization>
<allow roles="Admin"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
这是我将用户添加到角色的方式:
if (!Roles.RoleExists(DropDownList1.SelectedValue))
{
Roles.CreateRole(DropDownList1.SelectedValue);
}
Roles.AddUserToRole(TextBox1.Text, DropDownList1.SelectedValue);
这就是我的登录方式:
if (Roles.IsUserInRole(TextBox1.Text,"Admin"))
{
//Code to validate password
Response.Redirect("./Admin/AdminHome.aspx");
}
但是重定向不起作用。我只为管理员展示了代码,还有其他角色。当我单击登录按钮时,网址会更改,好像登录无效并停留在登录页面上。如果我缺少基于角色的授权的任何内容,请提供帮助。
编辑:我调试了整个代码,代码在 Respsonse.Redirect 处停止。是因为web.config的问题。为每个文件夹使用 web.config 会更好吗?
【问题讨论】:
-
“这就是我登录的方式”后面的代码实际上并没有让任何人登录。不是用于登录的正确代码。
-
哦。那么我添加的答案不是正确的方法吗?有什么链接可以分享吗?
-
不需要空白页。我添加了一个更简洁的答案。
-
是的,我也提到了你的回答。那个空白页是我别无选择的时候。然后今天得到了这个。总之非常感谢!!!