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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> страница регистрации 
:(
    Опции темы
MFSham
  Дата 2.4.2007, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Надо создать простую страницу регистрации. Т.е. первоначально пользователь попадает на нее,
вводит имя/пароль, и в зависимости от его статуса ему предоставляется определенная информация.

Перечитал много всякой инфы, появились вопросы. 

Пусть у имеются 3 группы пользователей:
1) администраторы
2) преподаватели
3) студенты
Соответственно для каждого из них возможности использования ресурса будут не полностью, но различаться.  Насколько я понял, это будет либо Forms-аутентификация, либо Аутентификации на основе ролей(вроде как самое то). При какой форме аутентификации этого лучше всего достичь? А может вообще проще все самому ручками написать...  
Что-то очень похожее(может даже то):
Код

protected void btnLogin_Click(object sender, System.EventArgs e) 
{ 
   if (!IsValid) // проверяем правильность введенных данных 
      return; 

   OleDbConnection connection = GetDbConnection(); 

   try 
   { 
      connection.Open(); 

      OleDbCommand command = new OleDbCommand(string.Format("SELECT id FROM Customers 
         WHERE login='{0}' AND password='{1}'", login, password), connection); 

      OleDbDataReader reader = command.ExecuteReader(); 
      if (!reader.Read()) // пароль или логин неверны 
      { 
         lblError.Text = "Неверный пароль - попробуйте еще раз"; 
         return ; 
      } 

      string id = return reader.GetInt32(0).ToString(); 

      FormsAuthentication.RedirectFromLoginPage(id, chkbRememberLogin.Checked); 
   } 
   catch (OleDbException ex) 
   { 
      lblError.Text = "Ошибка базы данных"; 
   } 
   finally 
   {  
      connection.Close(); 
   } 
}


Если это так, то пароли должны хранится в файле web.config. По моему это слегка неудобно.
Например, если я захочу для каждого человека хранить какую-либо дополнительную инфу, то мне
придется как-то выкручиваться из этой ситуации. (может я вообще все напутал)   smile 
Тогда появляется смысл в простой БД. Это так или у меня уже все перепуталось? 

Буду рад любой полезной инфе или примерчику.

--------------------
Без ветра трава неподвижна. Без программ компьютеры бесполезны.
PM MAIL   Вверх
Mymik
Дата 3.4.2007, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



MFSham, Ну почему сразу в web.config ты можешь хранить в каком-нибудь файле txt к которому запрещен доступ для всех.
Но вообще конечно используется СУБД с отдельной таблицей в виде списка пользователей и вторая таблица в виде правил для этих пользователей. (во всяком случая я это делаю именно так).

А вот тебе пример -->> http://www.google.ru/search?hl=ru&neww...1%D0%BA&lr= любую ссылку берешь и читаешь.


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

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


Новичок



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

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



А зачем такая сложна схема входа в систему?? Посмотри как это сделано на основе personal starter kit. Всё работает на авотмате - никого собственного кода. 

В веб конфиге прописываешь запрет на доступ для неавторизованных пользователей и определяшь страницу для логина, как то так:

Код

<authentication mode="Forms">
    <forms loginUrl="Login.aspx" protection="All" timeout="300"/>
..........


Запрет незалогированным пользователям:
Код

<authorization>
    <deny users="?"/>
</authorization>


Вот с этого места
Цитата

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

чуть подробнее
PM MAIL ICQ GTalk MSN   Вверх
Mymik
Дата 4.4.2007, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



wildc, 
Цитата(wildc @  4.4.2007,  15:59 Найти цитируемый пост)

чуть подробнее 

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

wildc, Почитай что такое авторицазия по ролям.



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

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


Бывалый
*


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

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



Цитата(Mymik @  3.4.2007,  00:14 Найти цитируемый пост)
вторая таблица в виде правил для этих пользователей

Если не секрет, что именно ты хранишь в этой таблице?
--------------------
Без ветра трава неподвижна. Без программ компьютеры бесполезны.
PM MAIL   Вверх
Mymik
Дата 5.4.2007, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(MFSham @  4.4.2007,  20:10 Найти цитируемый пост)
Если не секрет, что именно ты хранишь в этой таблице? 

Код

RoleID | Role
-----------------
1         | Admin
2         | SuperAdmin
3         | Member

А в таблице с юзерами констрейн на эту таблицу с RoleID. При этом пользователь может иметь только одно правило, он не может быть сразу в нескольких

К примеру вот так вот. Еще как вариант
Код

UserName | Role            | ExpiredDate
---------------------------------------
Vasja        | Admin          | 10/10/2008
Vasja        | SuperAdmin | 03/10/2008
Vasja        | Member       | 10/10/2007
Petja         | Member       | NULL 

Вариант если тебе нужно определять для пользователя несколько ролей и ограничивать их по периоду действия.

P.S. все зависит от твоих потребностей... В принципе ты можешь не использовать отдельную таблицу, а сразу засовывать значение в таблицу с юзерами. Ну и так далее. Все определяется твоими возможностями и потребностями.


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

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


Бывалый
*


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

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



С аутентификацией на основе роляй все стало более-менее понятно.

Цитата(Mymik @  3.4.2007,  00:14 Найти цитируемый пост)
используется СУБД с отдельной таблицей в виде списка пользователей и вторая таблица в виде правил для этих пользователей

Это тоже стало понятно. Это ты каждому пользователя ставишь статус. А каким образом от этого
статуса запретить/разрешить пользоваться той или иной информацией?

--------------------
Без ветра трава неподвижна. Без программ компьютеры бесполезны.
PM MAIL   Вверх
Mymik
Дата 5.4.2007, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



если доступ в целом к странице тогда в web-config прописываю правила в <authorization></authorization> Если к какой-то части странице, тогда проверяю через HttpContext.Current.User.IsInRole() <-- это если в первом framework а если во втором то через Roles.Roles.IsUserInRole(<username>, <rolename>) но тогда тебе нужно еще прописывать прописывать провайдет для этих ролей... вобщем если тебе не хочется сильно и долго заморачиваться, то используй HttpContext.Current.User.IsInRole(<rolename>)

Это сообщение отредактировал(а) Mymik - 5.4.2007, 16:56


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

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


Опытный
**


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

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



А еще можно использовать LoginView настраиваешь шаблон для неавторизованных пользователей и для каждой роли отдельно. И в зависимости от роли отображаются те или иные конролы и инфа. Ну это если надо сделать все быстро и просто.
PM MAIL   Вверх
jeka_fox
Дата 13.4.2007, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Может не совсем в тему сказано, но были проблемы при использовании стандартных возможносте - одна из них самая главная - при использовании FormsAut.. допустим вкупе с провайдером SQL, храним в базе - логины, пароли и т.д., всем знакома ситуация, когда пользователю при логине предлогают поставить галочку - "аля запомнить меня", так вот, если на одном компе сия операция выполненна, то при смене пароля у пользователя (с другого компа, ну положим человек из интернет кафе домой пришёл ), на первом компе доступ будет по прежнему возможен, понятно конечно что не фиг где попало галки ставить, но всё же - преодолеть сие стандартными средствами не получается... может сталкивался кто.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

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

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

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


 




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


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

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