0

Я работаю над веб-приложением с поставщиками членства в sql. Я сопоставил роли для пользователя в 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

Он отрицает все роли. Не работает ни –

0

Вы попробовали? он будет работать

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

Где я должен добавить это? –

+0

вы можете поместить его перед getmethod или перед классом контроллера согласно вашему требованию –

+1

Это 'asp.net', а не' asp.net mvc' нет контроллеров. –

0

Я должен был установить formauthentication печенье, чтобы сделать это, и все работает отлично теперь

string username = UsernameTB.Text; 
FormsAuthentication.SetAuthCookie(username, false); 
Смежные вопросы