Как я могу проверить авторизацию при использовании аутентификации форм? - PullRequest
0 голосов
/ 24 января 2012

Я занимаюсь разработкой веб-сайта ASP.NET.Я планирую использовать проверку подлинности с помощью форм для гарантии проверки подлинности / авторизации, но я сталкиваюсь с двумя проблемами, связанными с авторизацией:

  1. Я знаю, как установить в веб-конфигурации, что аутентифицированные пользователиразрешено посещать веб-страницы (скажем, myPage.aspx).Но я не знаю, как определить, что UserA может получить доступ к myPage для получения его информации, а не информации UserB.Я думал о создании токена, когда пользователь проходит аутентификацию, поэтому я могу проверить, кому принадлежит этот токен, и проверить, доступна ли ему эта информация.Что вы думаете об этом подходе?Аутентификация формы генерирует токен как этот?(Я не нашел упоминаний об этом в своем исследовании).Если нет, могу ли я адаптировать механизмы проверки подлинности формы для создания или мне нужно написать все самостоятельно?

  2. Я хотел бы получить доступ к веб-сервисам, и они должны только возвращать информациюесли пользователь вошел в систему.По этой причине я хотел бы использовать тот же токен, который описан выше.Что вы думаете об этом?Это хороший подход?

Я спрашиваю об этом, потому что у меня нет опыта в разработке механизмов аутентификации / авторизации, любая помощь / подсказка была бы признательна.

1 Ответ

1 голос
/ 25 января 2012

Относительно первого вопроса: после проверки подлинности форм в приложении веб-форм ASP.Net личность пользователя отображается как объект FormsIdentity в свойстве Page.User.Identity. Этот объект имеет свойство Name, которое содержит имя пользователя, которое пользователь использует для входа на ваш сайт. Вы можете использовать это значение, чтобы ограничить доступ пользователя. Например, предположим, что в вашей базе данных есть таблица с пользовательской информацией, содержащей следующие поля:

userId int
userName varchar(25)
...more fields containing user information...

Вы можете ограничить доступ пользователя только к информации из строки в этой таблице, в которой userName равно свойству Page.User.Identity.Name, либо напрямую, если вы используете прямой ADO.Net, либо через ваш запрос к ORM. доменный объект (т.е. nHibernate или EF).

Что касается второго вопроса, то объект FormsIdentity, предоставляемый Page.User.Identity, имеет логическое свойство IsAuthenticated. Вы можете использовать это для ограничения доступа к вашему веб-сервису следующим образом:

if(Page.User.Identity.IsAuthenticated)
{
     //Call your web service in a secure manner
}
...