Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хранение пароля на стороне клиента 
:(
    Опции темы
Gluttton
Дата 26.10.2010, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 2
Всего: 54



Доброго времени суток!

Стою на пороге изобретения велосипеда smile .

Итак. Были БД (Firebird) и web-приложение (Mono). Для аутентификации были переопределены MembershipProvider и RoleProvider, для чего в БД созданы таблицы user, role, membership. Для ограничения пользователей в навигации использован Web.sitemap и соответствующие настрйки web.config. В целом все работало.
Но! Т.к. БД сложная (и важная), то вопрос разграничения прав между пользвателями является не тривиальной задачей (ранее этот вопрос уже поднимался).
После долгих раздумий у меня появилось желание возложить задачу контроля прав на СУБД и "транслировать" его (контроль) на уровень web-приложения, т.е. отказаться от использования указанных таблиц user, role, membership, а воспользоваться предоставляемым СУБД сервисом (возможностью создавать пользователей и роли, а самое главное возможностью наделения ролей и пользователей правами).
MembershipProvider и RoleProvider для выполнения поставленной задачи я переписал.
При этом используется следующий сценарий при доступе:
1. Пользователь вводит в web-браузере имя и пароль;
2. От имени пользователя unknown выполняется хранимая процедура на сервере, которая проверяет наличие указанного пользователя;
3. Если указанный пользователь существует, то от его имени для него определяются доступные роли;
4. На основании доступных ролей и Web.sitemap для пользователя отображается соответствующие ссылки;
5. Пользователь осуществляет переход по разрешенным ссылкам используя необходимые для этого роли.
Пункты 1 - 4 реализовать мне удалось, но вот с пунктом 5 у меня возникла проблема. Дело в том, что для переходе по предоставленным ссылкам пользователь обращается к БД от своего имени с различными ролями и для этого необходимо создавать новые подключения, а значит необходимы имя пользователя и пароль имя пользователя я узнаю так:
Код

Page.User.Identity.Name

Роль я определяю по ссылке по которой переходи пользователь. Т.о. остается вопрос как определить пароль?
Вариантов я вижу несколько:
1. Постоянно переспрашивать у пользователя его пароль (ужас - меня найдут и побьют smile );
2. Хранить пароль на стороне клиента и при необходимости отправлять его на СУБД (не уверен, но, по моему, за такое тоже могут побить).

Посоветуйте как быть? И кто вообще что думает по изложенному вопросу?
Буду признателен за любой совет.


--------------------
Слава Україні!
PM MAIL   Вверх
Voyager
Дата 26.10.2010, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 532
Регистрация: 8.2.2005

Репутация: нет
Всего: 18



А в сессии нельзя хранить пароль?
PM   Вверх
Freyzer
Дата 26.10.2010, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


обаятельный нахал
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 12.12.2009
Где: на Марсе

Репутация: 1
Всего: 1



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


--------------------
Advocatus Dei smile. Advocatus Diaboli smile. Ajo!   
PM MAIL   Вверх
Gluttton
Дата 26.10.2010, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 2
Всего: 54



Цитата(Voyager @  26.10.2010,  16:02 Найти цитируемый пост)
А в сессии нельзя хранить пароль? 

Я не по ASP.NET, я больше по SQL smile , поэтому я не знаю можно или нельзя (а так же на сколько это решение удачно).
Буду признателен если буквально в двух словах поясните приемущество данного способа.

Цитата(Freyzer @  26.10.2010,  16:31 Найти цитируемый пост)
А, уровни доступа?

Уровень доступа определяется ролью.

Цитата(Freyzer @  26.10.2010,  16:31 Найти цитируемый пост)
Ну, чем выше уровень, тем больше тебе приходиться проходить регистраций

Не совсем понял.
В моем случае "переход на уровень вниз" заключается переписыванием MembershipProvider и RoleProvider, что бы запросы направлялись не к пользовательским таблицам, а к системным.

Цитата(Freyzer @  26.10.2010,  16:31 Найти цитируемый пост)
после прохождения новой регистрации, ты можешь войти на ресур уже под новым уровнем доступа, как такой вариант?

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


--------------------
Слава Україні!
PM MAIL   Вверх
Gluttton
Дата 27.10.2010, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 2
Всего: 54



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


--------------------
Слава Україні!
PM MAIL   Вверх
Voyager
Дата 29.10.2010, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 532
Регистрация: 8.2.2005

Репутация: нет
Всего: 18



Gluttton, ну для сессий это нормально, они живут какое-то время (по-умолчанию вроде 20 минут), время жизни можно настроить в Web.config.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0546 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.