我正在一个现有的网站上。我目前正在为网站进行基于角色的授权。我在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");
}
但是重定向不起作用。我只显示了用于管理员的代码,还有其他角色。当我单击登录按钮时,URL会更改为好像登录无效,并停留在登录页面上。如果我缺少任何有关基于角色的授权的信息,请提供帮助。
编辑:我调试了整个代码,并且代码在Respsonse.Redirect处停止。是因为web.config的问题。为每个文件夹使用web.config会更好吗?
在使用表单身份验证时手动登录用户。使用FormsAuthentication.SetAuthCookie()。
例:
string username = UsernameTB.Text;
FormsAuthentication.SetAuthCookie(username, false);
登录后,您可以重定向到最初请求的页面或登录页面(取决于他们到达登录页面的方式)。您可以使用Response.Redirect()。这会将HTTP重定向发送给客户端,告诉客户端请求其他页面。一旦Response.Redirect()
完成后,用当前的执行结束ThreadAbortException
(这是正常的)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句