Я хотел бы воспользоваться:основе ролей безопасности без проверки подлинности форм в ASP .NET
Page.User.IsInRole("CustomRole");
Page.User.Identity.IsAuthenticated
при работе внутри методов Page, а также авторизации раздела в web.config:
<authorization>
<allow roles="Administrators, Supervisors" />
<deny users="*" />
</authorization>
, а также применять правила на классы и методы уровня:
[PrincipalPermission(SecurityAction.Demand, Role = "Administrators")]
В моем приложении я аутентифицирую ... настраиваемый механизм, который предоставляет мне идентификатор пользователя в ... http-заголовке. Я получаю пользовательский PIN-код (какой-то идентификатор) + роли. Но это побочный сюжет. Это не имеет значения.
На самом деле я хочу воспользоваться преимуществами создания ASP.NET в функциях авторизации, но имеет свой собственный механизм аутентификации. Думаю, мне нужно реализовать IPrincipal и IIdentity, это правильно? Я видел множество образцов в Интернете, но все они включают конфигурацию web.config, которая указывает поставщиков, а также FormsAuthentication как классы, которые, я думаю, мне не нужны. Мне просто нужно ввести свой пользовательский объект (который подготовлен мной) в запрос, и все.
Итак:
- , что это самый простой способ добиться этого?
- В чем разница между GenericPrincipal/IPrincipal?
Как получить/создать объект IIdentity? Я видел образцы с:
var id = new FormsIdentity (authTicket);
, но я не использую FormsAuthentication.
Thanks
Спасибо! Но возможно ли внедрить свой собственный IPrinciple при работе с проверкой подлинности с помощью форм? Я попытался использовать пользовательскую проверку подлинности, но у меня нет доступа к сеансу (я хотел бы сохранить там свой пользовательский объект, который позже будет вложен в HttpContext.Current.User), и это проблема для меня. – dragonfly
Вы можете временно сохранить свой объект аутентификации в контейнере 'Items', а затем скопировать его в контейнер сеанса, когда сеанс будет доступен (событие' AcquireRequestState'). –