2016-09-06 2 views
1

Я использую MVC5 и хотел бы иметь небольшой класс, как предлагается в вопросах здесь - атрибут, который позволяет передавать несколько ролей для авторизации роли. Определение выглядит следующим образом:Пользовательский авторизованный атрибут не работает должным образом

public class AuthorizeRolesAttribute : AuthorizeAttribute 
    { 
     public AuthorizeRolesAttribute(params string[] roles) 
     { 
      Roles = string.Join(",", roles); 
     } 
    } 

Использование есть (например), как это:

[AuthorizeRoles("Admin", "SuperAdmin")] 
    public ActionResult CompanyContacts() 
    { 
     return View(); 
    } 

Кроме того, в web.config я добавил следующую строку:

<system.webServer> 
    <modules> 
     <remove name="FormsAuthentication" /> 
    </modules> 
</system.webServer> 

И еще позволяют пользователям иметь доступ к методу. Он даже игнорирует конструктор вообще. Атрибут по умолчанию работает отлично. Кажется, что я чего-то не хватает. Любой совет?

Thank's!

+0

Вы зарегистрировали свой атрибут в атрибутах? и предоставили ли вы реализацию метода onActionExecuting в атрибуте? –

+0

№ Причина. Я просто хочу, чтобы атрибут по умолчанию имел возможность принимать несколько ролей не как одну строку, а как параметры. Для меня все другое поведение Authorize. – Pritorian

ответ

0

Ваш код работает нормально, если вы изменили роль пользователя, вы должны выйти из системы и снова войти в систему, поскольку старые учетные данные останутся действительными до окончания сеанса входа в систему.

+0

Ну, нет. Я не изменяю роль на лету. Просто войдите как простой пользователь и попытайтесь получить доступ к методу «admin» через адрес. Дело в том, что конструктор вообще не называется. Мб, это часть причины. – Pritorian

+0

Можете ли вы отправить образец проекта? Потому что здесь невозможно восстановить такую ​​же ситуацию! – Ziyad

Смежные вопросы