C# asp.net中基于角色的授权
我正在一个现有的网站上工作。我目前正在为该网站进行基于角色的授权。我在web.config中给出了以下内容:C# asp.net中基于角色的授权,c#,asp.net,roles,C#,Asp.net,Roles,我正在一个现有的网站上工作。我目前正在为该网站进行基于角色的授权。我在web.config中给出了以下内容: <system.web> <authentication mode="Forms"> <forms name=".ASPXFORMSAUTH" loginUrl="Login.aspx" requireSSL="false" protection="All" slidingExpiration="true" path="/" timeout="240" c
<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.IsUserInRole(TextBox1.Text,"Admin"))
{
//Code to validate password
Response.Redirect("./Admin/AdminHome.aspx");
}
但是重定向不起作用。我只显示了管理员的代码,还有其他角色。当我单击“登录”按钮时,url会发生变化,就好像登录无效一样,并停留在登录页面上。如果我缺少任何基于角色的授权,请提供帮助
编辑:我删除了整个代码的bug,代码在Respsonse.Redirect处停止。问题的原因是web.config。为每个文件夹使用web.config是否更好?在重定向逻辑之前,可能需要添加以下行
Response.BufferOutput = true;
我在这方面做了更多的工作。问题可能出在Response.Redirect()上。此语法不设置身份验证cookie,因此当它看到已启用身份验证时,返回到身份验证页面。两种方法:
谢谢大家的努力 使用表单身份验证时手动登录用户。使用 例如:
string username = UsernameTB.Text;
FormsAuthentication.SetAuthCookie(username, false);
在他们登录后,您可以重定向到最初请求的页面或登录页面(取决于他们到达登录页面的方式)。你用这个。这将向客户机发送HTTP重定向,告诉他们请求不同的页面。一旦
Response.Redirect()
完成,当前执行将以ThreadAbortException
结束(这是正常的)。我已编辑了问题。你能告诉我编辑的部分是否有效吗?@Partha我个人认为你的web.config没有任何问题。您是否尝试添加return
以查看这是否会强制该方法退出,就像有人在这个答案中尝试的那样?Response.Redirect()所做的唯一事情就是向客户端发送HTTP重定向。当前请求在该点结束。是。我错过了,也不知道出了什么问题。然后我读了更多关于身份验证的内容,得出了这个结论。Jus为那些可能错过这个小细节的人添加了这个。在“这就是我如何登录”之后的代码实际上并没有让任何人登录。不是用于登录某人的正确代码。哦。所以我补充的答案不是正确的方法?是否有任何链接可以共享?不需要空白页。我补充了一个更简洁的答案。是的,我也提到了你的答案。那一页是我别无选择的时候。然后今天得到了这个。无论如何,非常感谢!!!
string username = UsernameTB.Text;
FormsAuthentication.SetAuthCookie(username, false);