请参考这篇文章。
我已经能够配置我的web.config
文件,以便当未经身份验证的用户请求页面时,他会被重定向到该Login.aspx
页面。
我已经能够通过配置 web.config 文件和以下几行代码来做到这一点:
protected void btnLogin_Click(object sender, EventArgs e)
{
string username = this.usernameTextBox.Text;
string password = this.passwordTextBox.Text;
bool success = Membership.ValidateUser(username.Trim(), password.Trim());
if (success)
{
FormsAuthentication.SetAuthCookie(username, true);
Ice_Web_Portal.BO.User user = Ice_Web_Portal.BO.User.GetUserByUserName(username);
Ice_Web_Portal.BO.UserTypeEnum loginUserType = user.UserTypeEnum;
if (loginUserType == UserTypeEnum.Student)
{
Response.Redirect("~/Student/StudentControlPanel.aspx?username=" + username);
}
else if (loginUserType == UserTypeEnum.Teacher)
{
Response.Redirect("~/Teacher/TeacherControlPanel.aspx?username=" + username);
}
else if(loginUserType == UserTypeEnum.Webmaster)
{
Response.Redirect(@"~/Webmaster/WebmasterControlPanel.aspx");
}
else
{
labLoginMessage.Text = "Sorry! Type of user couldn't be determined!";
}
}
else
{
labLoginMessage.Text = Ice_Web_Portal.BO.User.LoginMessage;
}
}
但是我遇到的问题是,一旦用户通过身份验证,他就可以访问整个 Web 应用程序中的所有页面。
但我需要根据他们的角色限制他们的页面访问区域。即当具有不同角色的用户请求一个页面时,他应该被自动重定向到该Login.aspx
页面。
可能有一种技术,我可以在其中检查特定的用户角色,然后如果用户不在该角色中,Page_Load()-event
则将用户重定向到页面。Login.aspx
但我不想那样做。我想自动发生。我只需要使用 Role Provider 框架和 web.config 文件(就像在成员资格的情况下一样。即我不需要检查 Page_Load 事件中的成员资格。Web.config 文件会自动阻止访问)。
谁能告诉我如何在其中加入角色功能,以便特定用户被限制在他们特定的角色区域内?
生成授权票的代码是什么?