根据用户角色不起作用重定向到某些网页

时间:2019-11-01 07:58:23

标签: c# asp.net

我需要将具有特定角色的用户重定向到某个网页。这似乎不起作用。我在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");
        }

    }

然后效果很好。但是只是想知道这是否是一个好方法吗?

1 个答案:

答案 0 :(得分:0)

条件错误,您需要删除!

if (User.IsInRole("Clients"))
{
    Response.Redirect("~/Client.aspx"); 
}