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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Защита 
V
    Опции темы
Vit
Дата 15.4.2007, 04:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

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



Раскажите мне вкратце принципы защиты страниц. Поясняю: как обычно на любом сайте вводишь логин и пароль и становятся доступны защищённые странички. Как проверить логин и пароль я знабю, вопрос в том что имеется какая-то защищённая страничка, как на ней на onLoad определить что пароль на странице логина был введен правильный? Я так понимаюб что в этом случае используются сессионные переменные или куки, а вот простой примерчик можно привести?


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Mymik
Дата 15.4.2007, 09:00 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

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



Vit, Как правило в защищенных куках храниться только лишь Username данного пользователя. А дальше идет уже либо коннект к СУБД (при каждой загрузки страницы) либо хранение пользовательских ролей в каше или сессии(хранение ролей в куках еще не встречал (попросту глупо давать пользователю доступ к его ролям)) либо определение роли при Application_BeginRequest. Т.е. непосредственно там роли и выставляются.
В asp.net 2.0 реализуется данный функционал через Membership API.
В web.config создается два провайдета: membership и roleManager Первый провайдер отвечает за пользователей, второй за их роли.
К примеру для проверки пользователей используется
Код

Membership.ValidateUser(login, password);

После проверки пользователя мы делаем 
Код

FormsAuthentication.RedirectFromLoginPage(UserLogin, true);

Этим мы и создаем данные с которыми мы потом будем работать.
В последствии мы можем обращаться к имени пользователя с помощью 
Код

Membership.GetUser().Username;

А для доступа ролям в которых находится пользователь мы используем 
Код

Roles.GetUsersInRole(username);

Этой строкой мы и получаем все роли пользователя.

В asp.net 1.0 реализуется это дело несколько по иному. В принципе как и раньше мы делаем Валидацию пользователя (правда руками. Т.е. создаем сами соединение к базе там это все проверяем и возвращаем bool значение)

Дальше мы все так же создаем куки
Код

FormsAuthentication.RedirectFromLoginPage(UserLogin, true);


После чего мы имеем доступ к имени пользователя с помощью
Код

HttpContext.Current.User.Identity.Name


После этого создаем соединение с СУБД и запрашиваем роли для данного пользователя.
и после этого исправляем пользователя
Код

System.Security.Principal.IIdentity username = HttpContext.Current.User.Identity;
HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(username, (string[])userRoles);


вот и все. Вот так вот реализуется политика на сайте написаном на asp.net

P.S. если тебе нужно просто пользователя проверить тогда тебе на странице Login нужно выполнить строчку
Код

FormsAuthentication.RedirectFromLoginPage(UserLogin, true);

(Примечание: страница с которой ты выполняешь вызов данного метода должна быть прописана в web.config в разделе authentication)
И после этого запрашиваешь пользователя либо с помощью Membership либо с помозщь User


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
Exception
Дата 15.4.2007, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



PM   Вверх
Vit
Дата 15.4.2007, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

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



А чем плох вариант если я на форме с логином буду устанавливать какой-то флажок в сессионных переменных и на onLoad остальных форм проверять этот флажок? Это чревато какими-то подводными камнями? 


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Mymik
Дата 15.4.2007, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

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



Цитата(Vit @  15.4.2007,  20:45 Найти цитируемый пост)
А чем плох вариант если я на форме с логином буду устанавливать какой-то флажок в сессионных переменных и на onLoad остальных форм проверять этот флажок? Это чревато какими-то подводными камнями?  

После закрытия бразуера сессия умрет. И пользователю надо будет по новой заходить на логин-форму и вводить свои данные. В то время как cookie сохраняться в его браузере. Это типа функции "запомить вас" на форуме.


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
Vit
Дата 15.4.2007, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

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



Цитата(Mymik @  15.4.2007,  12:55 Найти цитируемый пост)
После закрытия бразуера сессия умрет. И пользователю надо будет по новой заходить на логин-форму и вводить свои данные. В то время как cookie сохраняться в его браузере. Это типа функции "запомить вас" на форуме. 



Если только это, то меня это пока устраивает, мне надо сейчас реализовать именно это.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Vit
Дата 16.4.2007, 02:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

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



Вопрос решён, всем спасибо!


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

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

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

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


 




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


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

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