Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / использование сессий для авторизации / 8 сообщений из 8, страница 1 из 1
13.06.2011, 20:28
    #37306922
barl_alibek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование сессий для авторизации
Стоит ли использовать session для реализации авторизации?
Например:
1 страница - страница ввода логина и пароля
Далее существует переход на вторую станицу, где методами рекуест и сессион мы запускаем процесс авторизации,
проверка логина и пароля
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<script language=Cache runat=server>
 		Do %session.Set("login",%request.Get("login"))
     		Do %session.Set("pass",%request.Get("pass"))
     		set obj=##class(data.User).CheckPassw(%session.Get("login"),%session.Get("pass"))
			</script>
<csp:if condition="obj'=0">
значения свойств класса data.User через sql-запрос
.........
<csp:else>

Вы указали неправильный логин или пароль


На сервере в классе data.User
есть свойтва logins (уникальное), password и name

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
ClassMethod CheckPassw(login As %String, passw As %String) As %Status
{
 set id=$Order(^data.userI("Pervkluch",login,- 1 ))
	if id="" quit  0 
	Set obj=##class(data.User).%OpenId(id)
	if obj.password=passw quit id
	quit  0 
}



Так вот интересует как поведут себя сессии если несколько пользователей решат одновременно
авторизоваться и пользоваться своими персональными данными? И будут ли данные соответствовать введенному логину и паролю?
...
Рейтинг: 0 / 0
13.06.2011, 20:36
    #37306927
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование сессий для авторизации
Во-первых, я бы предостерег от unique свойств, если уникальность нужна, ее лучше организовывать программными проверками.

Далее, вы хотите несколько пользователей запустить под одной сессией? Это было бы несколько странно.
Вы хотите одного пользователя запустить под разными сессиями одновременно? Это нормально, но только сессия не свойство класса пользователей, а отдельная сущность.
Или вопрос в том, повторяются ли сессии? Нет, не повторяются, кроме случая, когда на этом же браузере и на этом же компьютере с этими же куками после прерывания предыдущей сессии вы заходите снова - в этом случае сессия будет другая, но с таким же ID.

А что еще кроме сессий вы можете использовать в csp-авторизации?
...
Рейтинг: 0 / 0
13.06.2011, 21:55
    #37306989
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование сессий для авторизации
barl_alibekНапример:
1 страница - страница ввода логина и пароля
Далее существует переход на вторую станицу, где методами рекуест и сессион мы запускаем процесс авторизации,
проверка логина и пароля
Почему бы не проверить все на первой же странице в гипперэвенте? Если всё нормально - переходить на другие страницы.
...
Рейтинг: 0 / 0
14.06.2011, 05:35
    #37307121
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование сессий для авторизации
krvsa,

А как это защитит от ввода адресов произвольных страниц в адресной строке?
...
Рейтинг: 0 / 0
14.06.2011, 08:46
    #37307170
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование сессий для авторизации
Блок А.Н.А как это защитит от ввода адресов произвольных страниц в адресной строке?
Алгоритм их формирования...

Код: plaintext
1.
2.
3.
4.
<CSP:IF CONDITION='($g(%session.Get("UserId"))="")'>
<p>У вас нет авторизации...</p>
<CSP:ELSE>
<!-- Тут вормировать всё остальное... -->
</CSP:IF>
...
Рейтинг: 0 / 0
14.06.2011, 09:25
    #37307196
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование сессий для авторизации
barl_alibek ,

Вы можете поступить проще: начальную страницу авторизации сделать обычной (PRIVATE=0), а остальные приватными (PRIVATE=1).
В этом случае неавторизированные пользователи не смогут перейти на произвольные страницы.
Private Pages
...
Рейтинг: 0 / 0
15.06.2011, 18:06
    #37309789
barl_alibek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование сессий для авторизации
Блок А.Н.,

Блок А.Н.Во-первых, я бы предостерег от unique свойств, если уникальность нужна, ее лучше организовывать программными проверками.
А разве при попытке сохранить одинаковые значения для свойств unique не приведет к пибиканию

Блок А.Н.Далее, вы хотите несколько пользователей запустить под одной сессией? Это было бы несколько странно.
Вы хотите одного пользователя запустить под разными сессиями одновременно? Это нормально, но только сессия не свойство класса пользователей, а отдельная сущность.
Ну если это нормально то тогда все нормально. Мне нравится она потому что можно данные передавать между страницами и использовать в поиске определенных данных.


Блок А.Н.А что еще кроме сессий вы можете использовать в csp-авторизации?
Можно, но зачем?!
...
Рейтинг: 0 / 0
15.06.2011, 18:11
    #37309796
barl_alibek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование сессий для авторизации
servit,
servitbarl_alibek,

Вы можете поступить проще: начальную страницу авторизации сделать обычной (PRIVATE=0), а остальные приватными (PRIVATE=1).
В этом случае неавторизированные пользователи не смогут перейти на произвольные страницы.
Private Pages
Не эта штука мне не нравится, я просто запускаю на каждой сранице
Код: plaintext
1.
2.
<script language=Cache runat=server>
     		set obj=##class(data.User).CheckPassw(%session.Get("login"),%session.Get("pass"))
			</script>
А на зен-страницах переопределяю метод %OnAfterCreatePage
Код: plaintext
1.
2.
3.
4.
5.
Method %OnAfterCreatePage() As %Status
{
	set obj=##class(data.User).CheckPassw(%session.Get("login"),%session.Get("pass"))
	Quit $$$OK
}
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / использование сессий для авторизации / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]