ASP.NET одностраничная авторизация - PullRequest
0 голосов
/ 23 февраля 2012

У меня есть приложение ASP.NET, где большинство страниц доступны для всех прошедших проверку пользователей через модуль единого входа, который задает имя пользователя в переменной массива Session. Теперь у меня есть одна папка A, содержащая одну страницу B.aspx и список имен пользователей, которым разрешен доступ к этой странице B.aspx.

Мой вопрос: как мне элегантно авторизовать только этих пользователей для этой одной страницы или, что лучше, для этой одной папки. Можно ли это сделать с помощью тега location в файле Web.config в папке A? Если да, то как мне связать эту конфигурацию с пользовательским кодом, чтобы проверить, является ли имя пользователя, сохраненное в переменной сеанса, одним из авторизованных для этой папки или страницы? Могу ли я использовать пользовательский член сообщества?

Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 23 февраля 2012

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

0 голосов
/ 23 февраля 2012

Поскольку ваше имя пользователя не определено в файле web.config, а определено в некоторой переменной сеанса, для этого необходимо создать билет проверки подлинности формы, например,

FormsAuthenticationSupport formsAuthenticationSupport = new FormsAuthenticationSupport();
formsAuthenticationSupport.SignIn(UsernameInSession, RoleName, true);

Теперь вы можете установить правила аутентификации и тег местоположения в web.config для UsernameInSession.

0 голосов
/ 23 февраля 2012

Во-первых, вы отказываетесь от методологии безопасности Kludged, поскольку имя пользователя в файле cookie сеанса не является хорошим способом справиться с этим.Хорошо, может быть, слишком за борт, так как низкий уровень безопасности может подойти вам.Если это так, вы можете написать собственный обработчик для страницы, которая проверяет имя пользователя и сравнивает его с обновляемым списком.

NEW: с объектом Session вы немного более защищены, так как маркер сеанса пересылается иимя хранится в сеансе, но биты членства (ниже) обрабатывают перевод конкретного сеанса пользователю без перезаписи с помощью пользовательской методологии «этот пользователь использует этот сеанс».Да, в конечном итоге вы можете утверждать, что Microsoft делает что-то очень похожее на ваше программное обеспечение, но вы оставляете им обслуживание.

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

Крутая вещь во встроенном материале заключается в том, что вы можете декларативно настроить безопасность и сделать так, чтобы конвейер определял, является ли пользователь действительным или нет без каких-либо тяжелых действий с вашей стороны.информация о членстве и ролях на различных сайтах, ориентированных на ASP.NET.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...