Членство в ASP.NET / Роли / FormsAuth - как я могу войти в систему как суперпользователь? - PullRequest
0 голосов
/ 25 февраля 2009

Я работаю над веб-приложением, в котором используются поставщики членства и ролей ASP.NET 2.0 с проверкой подлинности с помощью форм. В системе есть разные роли. Мне нужно иметь роль пользователя, которая, по сути, является суперпользователем, который может «входить в систему» ​​под любой учетной записью пользователя (фактически подражая пользователю).

Кто-нибудь знает, возможно ли это с помощью провайдеров? Есть идеи?

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

FormsAuthentication.SetAuthCookie(username, false);

И добавление переменной в их Сессию, чтобы пометить их как суперпользователя. Я думаю, что это сработает, но мне просто интересно, есть ли более разумный способ сделать это без непосредственного использования объекта Session?

Ответы [ 3 ]

0 голосов
/ 25 февраля 2009

Подход Asp.net не поддерживает эту концепцию, поэтому вы правы, пытаясь найти альтернативный путь. Что-то, что вы можете сделать, это добавить информацию IsSuperUser в свойство UserData билета аутентификации.

0 голосов
/ 28 марта 2013

Вот что я бы сделал. Извините, нет графики, на Ipad здесь в постели ...

1) использовать архитектуру на основе утверждений. Его легко реализовать, см. Мой проект.

2) по существу выдаваемый за себя пользователь будет иметь второй идентификатор в основном объекте утверждений, но будет иметь другую область (область может быть неверным словом, строкой, которую вы используете для создания идентификатора)

3) Вы можете создать личность олицетворенного пользователя и вручную создать его утверждения .... Они должны быть немедленно записаны в токен. Я бы посмотрел на общий класс Claims Transformer, чтобы сделать это.

4) Возможно, вам придется изменить поведение сайта, исходя из наличия олицетворенной личности, но это самое интересное.

Рабочая реализация WIF https://github.com/wcpro/scaffr-generated

0 голосов
/ 25 февраля 2009

Почему у вас нет роли SuperUser, которая может делать все что угодно? Тогда пользователь может быть только частью этой роли.

Если вам действительно нужно иметь возможность администратора выдавать себя за кого-то другого, я не знаю, для чего нужен дополнительный флаг? Если он помечает вошедшего в систему пользователя, наделяющего его сверхспособностями, то же самое достигается путем настройки роли. Однако, если вам нужно просто выдать себя за кого-то другого (например, это служба поддержки, и вам нужно видеть то же самое, что видит конечный пользователь) - я бы просто проверил учетные данные в обычном режиме, а затем проверил, входит ли суперпользователь в систему и они хотят выдать себя за него и, основываясь на этом, просто аутентифицируют входящего в систему пользователя как того, которого он готов выдать за себя.

Надеюсь, то, что я написал, имеет смысл ...

...