基于位置的角色身份验证无效

时间:2014-11-06 07:40:25

标签: c# web-config authorization asp.net-membership asp.net-roles

我正在使用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>

请让我知道我做错了什么?

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

你试试这个吗?它会起作用

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

答案 2 :(得分:0)

我必须设置formauthentication cookie来执行此操作,现在一切正常

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