Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 32273|Отговор: 2

[Източник] Упълномощаване, базирано на роля

[Копирай линк]
Публикувано в 7.06.2020 г. 21:25:56 ч. | | |
133 от 153 души намериха това за полезно
Когато се създаде идентичност, тя може да принадлежи на една или повече роли, например Трейси може да принадлежи на ролите Администратор и Потребител, докато Скот може да принадлежи само на ролята на потребителя. Начинът, по който се създават и управляват тези роли, зависи от резервното хранилище на процеса на упълномощаване. Ролите се предоставят на инвеститора чрез имота IsInRole в класа ClaimsPrincipal.

Новата идентичност може да принадлежи на една или повече роли, например Трейси може да принадлежи към ролите Администратор и Потребител, а Докато Скот може да принадлежи само на Потребителската роля. Начинът, по който се създават и управляват тези роли, зависи от начина, по който се съхранява процесът на упълномощаване. Методът IsInRole в класа ClaimsPrincipal предоставя на разработчиците как да използват ролята.

Добавяне на проверки на роли Добавяне на валидиране на ролята

Проверките на авторизация, базирани на роли, са декларативни – разработчикът ги вгражда в своя код, спрямо контролер или действие в контролера, като определя ролите, които текущият потребител трябва да направи Бъдете член на За достъп до поискания ресурс.

Удостоверяването на роли е базирано на претенции, което разработчиците вграждат в своя код, като присвояват роли на контролер или методи в него, като уточняват, че потребителите в заявката трябва да отговарят на съответните изисквания за членство.

Например, следният код би ограничил достъпа до всякакви действия на AdministrationController само за потребители, които са членове на групата Administrator.

Например, следният код ще ограничи всеки метод в AdministrationController да се използва само като член на групата на администраторите.



Можете да посочите множество роли като списък с разделен със запетая;

Можете да добавите няколко назначени роли към списък със запетая:



Този контролер ще бъде достъпен само за потребители, които са членове на ролята HRManager или във Финансите.

Контролерът ще бъде достъпен само за членове на ролята HRManager или на Финансите.

Ако приложите няколко атрибута, тогава достъпващият потребител трябва да е член на всички посочени роли; следният пример изисква потребителят да бъде член както на ролята PowerUser, така и на ControlPanelUser ролята.

Ако използвате няколко атрибута, потребителят за достъп трябва да е член на всички роли; Следният пример изисква потребителят да е член както на ролите PowerUser, така и на ControlPanelUser ролите.



Можете допълнително да ограничите достъпа, като приложите допълнителни атрибути за авторизация на ролята на ниво действие;

Можете да използвате допълнителни атрибути за упълномощаване на ролята на ниво метод, за да приложите допълнителни ограничения за използване;




В предишните кодови фрагменти членове на ролята Администратор или PowerUser могат да имат достъп до контролера и действието SetTime, но само членовете на ролята Администратор могат да имат достъп до Действие: Изключване.

В предишния код фрагмент членовете на ролите Администратор или PowerUser могат да използват методите Controller и SetTime, но само членовете на ролята Administrator могат да използват метода ShutDown.

Можете също да заключите контролер, но да позволите анонимен, неудостоверен достъп до отделни действия.

Можете също да блокирате контролер, но да позволите на анонимни потребители да използват отделни методи без разрешение.



Проверки на роли, базирани на политики, Проверки на роли, базирани на политики

Изискванията за роли могат да бъдат изразени и чрез новия синтаксис Policy, при който разработчикът регистрира политика при стартиране като част от конфигурацията на услугата за упълномощаване. Това обикновено се използва в ConfigureServices() във вашия Startup.cs файл.

Ролите могат да се постигнат и чрез използване на нов синтаксис на политика, при който разработчиците регистрират политика като част от конфигурацията на услугата за авторизация при стартиране. Това обикновено се добавя към ConfigureServices() на Sartup.cs файла.



Политиките се прилагат чрез свойството Policy върху атрибута AuthorizeAttribute;

Реализирайте политиката, като използвате свойството Policy върху свойството AuthorizeAttribute.



Ако искате да зададете няколко позволени роли в дадено изискване, можете да ги зададете като параметри към метода RequireRole;

Ако искате да посочите няколко роли в заявка, можете да ги зададете като множество параметъра на метода RequireRole:



неговият пример упълномощава потребители, които принадлежат към ролите Администратор, PowerUser или BackupAdministrator.

Упълномощеният потребител в този пример ще принадлежи към ролите Администратор, PowerUser или BackupAdministrator.

Прехвърлен от:Входът към хиперлинк е видим.




Предишен:Решен е проблемът, при който HttpContext.User.IsInRole() винаги връща false
Следващ:TS Липсващ параметър на радикса (radix)
 Хазяин| Публикувано в 7.06.2020 г. 21:36:01 ч. |


Ако искате да приложите само последната функция, тоест:

Можете да добавите следното към персонализирания филтър:


AllowMultiple

Този атрибут показва дали нашите персонализирани функции могат да бъдат поставени няколко пъти преди една и съща програмна единица.
 Хазяин| Публикувано в 10.06.2020 г. 11:46:34 ч. |
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com