PrincipalPermission vs Authorize Attribute?
Кто-нибудь может объяснить мне различия и варианты использования этих двух атрибутов? Я совершенно сбит с толку, так как они ведут себя одинаково.
Я знаю, что [Authorize] подключается к жизненному циклу приложения ASP.NET и запускается до того, как запрос достигает контроллера / действия. Как насчет принципала разрешения?
[PrincipalPermission(SecurityAction.Demand, Role="Admin")]
А также
[Authorize(Roles="Admin")]
1 ответ
Authorize
Атрибут используется для указания ограничения доступа к контроллеру или методу действия. Другими словами, вы можете предоставить или запретить пользователям / ролям доступ к отдельным страницам или URL-адресам на сайте.
Когда вы аутентифицируете пользователя в приложении ASP.NET, идентификация аутентифицированного пользователя будет автоматически передаваться по запросу этого пользователя на сервере.
Вы можете использовать эту информацию о личности на бизнес-классах через PrincipalPermission
приписывать. С PrincipalPermission
Вы можете авторизовать возможности пользователя. Например, вы можете запретить пользователям создавать экземпляры классов или обращаться к методам в ваших бизнес-классах.
Это позволяет легко добавлять чистые правила авторизации безопасности для вашего бизнеса и уровней данных.
using System;
using System.Security.Permissions;
[PrincipalPermission(SecurityAction.Demand, Authenticated = true)]
public class EmployeeManager
{
[PrincipalPermission(SecurityAction.Demand, Role = "Manager")]
public Employee LookupEmployee(int employeeID)
{
// todo
}
[PrincipalPermission(SecurityAction.Demand, Role = "HR")]
public void AddEmployee(Employee e)
{
// todo
}
}
Например, используя PrincipalPermission
атрибутов,
EmployeeManager
Класс может быть создан только авторизованными пользователями.LookupEmployee
метод может быть доступен только пользователям сManager
роль.
Рекомендации
Добавление правил авторизации на бизнес-уровень и уровень данных