我需要将具有特定角色的用户重定向到某个网页。这似乎不起作用。我在Google上找到了各种建议,但仍然无法正常工作。
这是我的登录代码:
protected void btnLoginButton_Click(object sender, EventArgs e)
{
if (Membership.ValidateUser(UserName.Text, Password.Text))
{
FormsAuthentication.SetAuthCookie(UserName.Text, true);
Session["UserName"] = this.UserName.Text.Trim();
Response.Redirect("~/Index.aspx");
}
if (!User.IsInRole("Clients"))
{
Response.Redirect("~/Client.aspx");
}
InvalidCredentialsMessage.Visible = true;
}
以及在我的web.conf
中:
<roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider" cacheRolesInCookie="true" createPersistentCookie="false" cookieProtection="All">
<providers>
<clear />
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" applicationName="/" connectionStringName="DefaultConnection" />
<add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" />
</providers>
</roleManager>
基本上,我只需要在角色“ Clients”中的用户登录时将其重定向到Clients.aspx页。
如果您需要更多信息,请告诉我。 谢谢
更新
当我这样做时:
protected void Page_Load(object sender, EventArgs e)
{
Session["UserName"] = this.UserName.Text.Trim();
if (Roles.IsUserInRole(UserName.Text, "Clients"))
{
Response.Redirect("/Clients.aspx");
}
}
然后效果很好。但是只是想知道这是否是一个好方法吗?
答案 0 :(得分:0)
条件错误,您需要删除!
if (User.IsInRole("Clients"))
{
Response.Redirect("~/Client.aspx");
}