2010-12-08 4 views
0

Должно быть что-то, что я не вижу в своем понимании того, как работает система аутентификации/авторизации и входа в систему .NET. У меня есть страница администратора/default.aspx, которое ограничено административными пользователями, поэтому у меня есть, например:Роли аутентификации авторизации .NET login redirct returnURL confusion

<configuration> 
    <system.web> 
    <authorization>  
     <allow roles="admin" />  
     <deny users="*" /> 
    </authorization> 
    </system.web> 
</configuration> 

Когда пользователь получает здесь, если он не является администратором, он перенаправляется на страницу входа в систему в качестве указанный в web.config:

<authentication mode="Forms"> 
    <forms loginUrl="Login.aspx" name="someName" timeout="60" path="/"> 
    </forms> 
</authentication> 

с возвратного URL (который выглядит как ReturnUrl =% 2fAdmin% 2fDefault.aspx). Теперь, если пользователь снова войдет в систему с учетными данными, которые не соответствуют спецификации роли «admin», он перенаправляется на страницу admin/default, а затем снова возвращается на страницу входа в систему.

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

Как я могу это сделать?

Спасибо заранее,

Расти

ответ

0

Вы можете сделать это несколько способов:

  1. Написать пользовательский поставщик аутентификации, полученный от поставщика форм.

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

+0

Благодарим за отзыв. Тем временем Ive придумывает работу, следуя идеям этого блога: http://geekswithblogs.net/ranganh/archive/2005/04/25/37598.aspx, и получается похожее на ваше предложение №2 , На странице входа я проверяю, есть ли у пользователя уже аутентификация и есть ли returnURL - если это так, я просто перенаправляюсь на домашнюю страницу. Я бы подумал, что существует более формальное решение, использующее настройку безопасности .Net, но сейчас это работает. – rusty 2010-12-08 17:56:58

Смежные вопросы