0

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

請讓我知道我做錯了嗎?

回答

0

您需要改用<deny users="*"/>。請參閱MSDN舉例。

+0

它否認了所有角色。不起作用 – 2014-11-06 07:47:55

0

你有試過嗎?它會工作

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

我應該在哪裏添加? – 2014-11-06 07:52:32

+0

根據您的要求,您可以在getmethod之前或控制器之前放置它 – 2014-11-06 07:58:28

+1

它是'asp.net',而不是'asp.net mvc'沒有控制器。 – 2014-11-06 08:05:26

0

我不得不設置formauthentication cookie來做到這一點,一切工作正常,現在

string username = UsernameTB.Text; 
FormsAuthentication.SetAuthCookie(username, false); 
相關問題