我有一个 web.config 文件,通过该文件,我尝试使用位置标记为我的应用程序提供基于角色的安全性。我阅读了很多文章并转到结果,位置标记提供了对授权用户的有限文件夹的访问权限,例如在我的网络配置中我有一个文件夹“ HRpages “只允许访问角色为” HR “的用户。但我不清楚如何在我的代码文件( Login.aspx.cs )中使用它进行授权。
注意:现在“Login.aspx.cs”并未将我重定向到“ WelcomeHR.aspx ”页面。不知道为什么。
Web.Config
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<authentication mode="Forms">
<forms loginUrl="Login.aspx" defaultUrl="WelcomePage.aspx">
</forms>
</authentication>
<authorization>
<deny users="?" />
</authorization>
</system.web>
<location path="HRpages">
<system.web>
<authorization>
<allow roles="HR" />
<deny users="*" />
</authorization>
</system.web>
</location>
<location path="AdminPages">
<system.web>
<authorization>
<allow roles="Admin" />
<deny users="*" />
</authorization>
</system.web>
</location>
<system.webServer>
<defaultDocument>
<files>
<add value="AddTwoNumbers.asmx" />
</files>
</defaultDocument>
</system.webServer>
</configuration>
的 Login.aspx.cs 的
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;
namespace WebServiceExample
{
public partial class Login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
if (TextBox1.Text.Trim() == "ABC" && TextBox2.Text.Trim() == "Gupta" && TextBox3.Text == "HR")
{
String returnUrl1;
// the login is successful
if (Request.QueryString["ReturnUrl"] == null)
{
returnUrl1 = "HRPages/WelcomeHR.aspx";
}
//login not unsuccessful
else
{
returnUrl1 = Request.QueryString["ReturnUrl"];
}
Response.Redirect(returnUrl1);
}
}
}
}
任何帮助????
答案 0 :(得分:0)
可能这种情况不正确:
if (Request.QueryString["ReturnUrl"] == null)
即使是这样,你也没有登录用户或将他们的角色设置为“HR”......所以在良好的重定向上,他们将无法访问该页面。
您可以使用FormsAuthentication.SetAuthCookie。
登录用户if (TextBox1.Text.Trim() == "ABC" && TextBox2.Text.Trim() == "Gupta" && TextBox3.Text == "HR")
{
FormsAuthentication.SetAuthCookie("ABC", true); //this will login the user as ABC
String returnUrl1;
//I don't understand how the logic below determines successful login or not.
// the login is successful
if (Request.QueryString["ReturnUrl"] == null)
{
returnUrl1 = "HRPages/WelcomeHR.aspx";
}
//login not unsuccessful
...
您还必须使用Role Management ...您没有参考。