基于位置的角色身份验证不起作用

本文关键字:角色 身份验证 不起作用 位置 于位置 | 更新日期: 2023-09-27 18:29:32

我正在开发一个具有sql成员资格提供程序的web应用程序。我已经为SQL中的用户映射了角色,并且正确地为用户分配了角色。以下代码运行良好。

        protected void btnLogin_Click(object sender, EventArgs e)
        {
        if (Membership.ValidateUser(txtUserName.Text, txtPassWord.Text))
        {
            if (Roles.IsUserInRole(txtUserName.Text, "admin"))
            Response.Redirect("~/Users/ViewUsers.aspx");
        }
        else
        {
            lblErrorMessage.Visible = true;
        }
    }

但我想在我的配置中执行所有的访问拒绝逻辑。以下代码不起作用。具有所有角色的用户都会被重定向,而不管其角色如何。

<location path="Users">
<system.web>
  <authorization>
    <allow roles="admin"/>
    <deny roles="user"/>
  </authorization>
</system.web>

请告诉我我做错了什么?

基于位置的角色身份验证不起作用

您需要使用<deny users="*"/>。请参阅MSDN文章中的示例。

你试过这个吗?它将工作

 [Authorize(Roles = "Super Admin,Business Admin")]

我必须设置形式验证cookie才能做到这一点,现在一切都很好

string username = UsernameTB.Text;
FormsAuthentication.SetAuthCookie(username, false);