Проблем с Authorize атрибута


2

Здравейте,

Опитвам се да подкарам валидация при достъпване на базов контролер. Съответно съм сложил атрибут на класа
 [Authorize(Roles = "admin, companyAgent")]

При опит да достъпя съответният контролер обаче получавам пренасочване към login page. Проверих на няколко пъти да не би да съм объркал стринговете, а също така и проверих в базата за конкретният user с който съм логнат дали има зададена роля и всичко изглежда да е наред (в IdentityUserRoles имам UserId, което съответства на коректната роля). При опит да дебъгна в конструктура на контролера с System.Threading.Thread.CurrentPrincipal.IsInRole("companyAgent") забелязах, че ми връща false, както и за всички останали роли. Дали трябва да се направи някаква допълнителна настройка или аз съм объркал нешо?

Благодарско предварително ;)





Отговори



0
"в IdentityUserRoles имам UserId, което съответства на коректната роля". UserId трябва да е Id-то на user-а и RoleId Id-то на ролята. Да не си ги обърнал? Как добавяш роли към юзър? Може ли да покажеш какво точно имаш в базата?

от westi3m (5621 точки)


0
Така добавям ролята -> UserManager.AddToRole(currentUser.Id, "companyAgent");
Да както се подразбира UserId-то е GUID-a който съответства на конкретния User (тоест ID-то му) и RoleId-то е GUID-a който съответства на конкретно сетнатата роля в IdentityRoles. Не виждам голям смисъл да ти показвам GUID-овете, проследил съм дали конкретните ID-та съответстват на правилните данни. Проблема е някаде другаде според мен.

от luboganchev (1090 точки)


0
Ако данните са ти правилни проблема НЕ е в authorize атрибута.
Пробва ли да разлогнеш и логнеш user-а? Ако добавиш userToRole, identity-то не се е "рефрешнало", все още пази старите роли и IsInRole за новата роля ще връща false. Трябва auth cookie-то да се генерира отново затова предлагам SignOut и SignIn (може и програмно като не се сещам в момента за по-културен вариант).

от westi3m (5621 точки)