powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Доступ!
25 сообщений из 46, страница 1 из 2
Доступ!
    #34512329
oxcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Пишу дипломку на cache 2005 "Web-site образовательного учреждения"!

У меня есть проверка на сайте на логин и пароль. Она только проверяет и все. У меня вопрос по доступу.

Может кто-нибудь подсказать как сделать так, чтобы зарегистрированные пользователи могли заходить на определенные страницы, а незарегистрированные пользователи нет? Использовать Coocie или можно использовать глобалы? И как сделать так чтобы при загрузке страницы она проверяла зареген пользователь или нет? Я новичок в каше поэтому может что-то неправильно описал.

Заранее ответившим спасибо!
...
Рейтинг: 0 / 0
Доступ!
    #34512599
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роль Каше в этом вопросе на втором плане :)
Ты это умееш делать не в Каше?
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Доступ!
    #34512617
oxcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, я и в каше и в web-технологиях новичок!
...
Рейтинг: 0 / 0
Доступ!
    #34512684
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело осложняется... :(
Вот один из примеров редиректа
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<html>
<title>Передод на страницу...</title>
<head>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="TEXT/HTML; CHARSET=WINDOWS-1251">
<script language='javascript'>
function Go() {
   top.location="menu.csp"
}
</script>
</head>
<body onload='Go()'>
<p>Переход на другую страницу...</p>
<p>Если переход на другую страницу не происходит автоматически то нажмите
<a href='menu.csp'>сюда</a>.
</p>
</body>
</html>
Только тут он делается без анализа и после загрузки страницы... А тебе нужно другое событие, не onload ... Выполняемое в самом начале, просто я сейчас не помню к чему там лучше привязаться...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Доступ!
    #34512772
oxcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как нибудь так нельзя типа:кодом каше

Код: plaintext
1.
2.
3.
4.
5.
<script language='Cache'>
if (^ok= 1 ) then
...
else
....
</script>

^ok -- глобальная переменная
...
Рейтинг: 0 / 0
Доступ!
    #34512817
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю что тут желательно разграничить "обязанности"...
Каше пусть занимается данными... А управлением страниц пусть займется что-то вебовское...

Для начала тебе нужно решить какие данные будут использоваться в задачке... Как их хранить... После этого можно двигаться дальше.
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Доступ!
    #34512839
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напиши на ksa@npcair.ru пришлю тебе для ознакомления курс молодого кашевара Почитай...
Просто тут не крепится... Файл большеват :(
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Доступ!
    #34512856
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делать наверно нужно примерно так

1. Берем параметры логин-пароль.
2. Проверяем их, если проверка прошла, записываем их внутри базы (типа такой-то зашел под такой сессией)
3. В каждой странице в методе OnPreHTTP проверяем залогинился ли под этой сессией какой-нибудь пользователь, и можно ли ему открывать эту страницу.
Если OnPreHTTP возращает 1, то загрузка тела страницы продолжается, если 0, то обрывается
...
Рейтинг: 0 / 0
Доступ!
    #34512875
oxcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну у меня на сайте будет 5 ролей

это

пользователь
студент
преподаватель
декан
администратор

пользователь - не может делать ниче только просмотреть сайт
студент - может просмотрть базу "оценки" добавлять комментарии к лекциям
преподаватель - может смореть базу "оценки" и список студентов а также добавлять лекции
декан - может смотреть список преподавателей, список студентов, базу "оценки"
администратор - может смотреть редактировать все.

так нормально будет? Может Вы посоветуйте как-нить получше!
...
Рейтинг: 0 / 0
Доступ!
    #34512904
oxcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.
2. Проверяем их, если проверка прошла, записываем их внутри базы (типа такой-то зашел под такой сессией)


А сессии всегда же разные, или нет?

Если я зашел в 1 раз сессия допустим 2885876
если зашел в 2 раз то сессия 45135443

или я не прав?
...
Рейтинг: 0 / 0
Доступ!
    #34512974
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В течении одного сеанса сессия одна, но между сеансами уникальная
Поэтому нужно хранить связку сессия/пользователь, а связку эту делать в момент логина.
...
Рейтинг: 0 / 0
Доступ!
    #34512978
oxcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н. А вы не могди бы на небольшом примере показать? Как примерно это выглядит!
...
Рейтинг: 0 / 0
Доступ!
    #34513146
aleshap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю не стоит усложнять задачу, необходимо простейший пример для дипломной работы, крутых наворотив с супер безопасности тут не нужно.

Просто в OnPreHTTP метода страницы размещаешь примерно следующий код

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
ClassMethod OnPreHTTP() As %Boolean [ Final, ServerOnly =  1  ]
{
 	if %session.Get("status")="" d %session.Set("status","пользователь")  //минимальный достоп	
	if (%request.Get("app")="login") {
		//сюда поподаем после submit на форме регистрации
		s login = %request.Get("Login")
		s password = %request.Get("Password")
		// проверка данных авторицазии
		if OK { 
			d %session.Set("status","роль пользователя") 
			d %session.Set("userID",ID) // ID - пользователя
		} else {
			d %session.Set("status","пользователь")	
		}
	}
	q $$$OK
}

Далее в коде можно проверять %session.Get("status") и в зависимости от роли, давать или не давать пускать или не пускать.
...
Рейтинг: 0 / 0
Доступ!
    #34513202
oxcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем ответившим! Постараюсь разобраться, если не получится в этот же топик обращусь!
...
Рейтинг: 0 / 0
Доступ!
    #34513254
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробую, только придется много выкидывать из текста, и кое-что добалять, так что не факт, что будет работать без отладки. Я постараюсь покороче
Страница входа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
<HTML>
<HEAD>
</server>
<script language=javascript>
 function login()
 {#call(..login(loginForm.user.value,loginForm.password.value))#;
 }
</script>
</HEAD>
<BODY>
<div style="height:33%"></div>
<center>
<form name=loginForm>
<table>
 <tr> <td>Имя <td><input type=text name=user onkeypress="if(event.keyCode==13)password.focus()" >
 <tr> <td>Пароль<td><input type=password name=password onkeypress="if(event.keyCode==13)login()">
 <tr> <td colspan= 2 ><center><button onclick=login()>Вход</button>
</table>
</form>
</BODY>
</HTML>
<script language=cache method=login arguments="user:%String,password:%String">
 s flag=##class(Auth.SysUser).Login(user,password,%session.SessionId)
 w:flag "location.href='main.csp';"
 w:'flag "alert('Вход не произведен');"
 q
</script>

Класс
Пользователя
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
Class Auth.SysUser Extends %Persistent
{

Parameter EXTENTSIZE =  2 ;

Property Session As %String(TRUNCATE =  1 );

Property Enabled As %Boolean [ InitialExpression =  1  ];

Property Login As %String(TRUNCATE =  1 ) [ InitialExpression =  1 , Required ];

Property Hash As %String(TRUNCATE =  1 ) [ Private ];

Property Password As %String(TRUNCATE =  1 ) [ Transient ];

Index LoginIndex On Login [ Unique ];

Index SessionIndex On Session;

Method PasswordSet(pass As %String) As %Status
{
 q:pass=""
 s ..Hash=$system.Encryption.MD5Encode(pass)
}

ClassMethod SetPassword(login As %String, pass As %String)
{
	s hash=$system.Encryption.MD5Encode(pass)
 	&sql(update Auth.SysUser set hash=:hash where login=:login )
}

ClassMethod CheckPassword(login As %String, pass As %String) As %Boolean
{
	s hash=$system.Encryption.MD5Encode(pass)
 	&sql(select login from Auth.SysUser where login=:login and hash=:hash and enabled= 1 )
 	q:SQLCODE= 0   1 
 	q  0 
}

ClassMethod Login(login As %String, pass As %String, session As %String) As %Boolean
{
 if ..CheckPassword(login,pass)
	{&sql(update Auth.SysUser set session='' where session=:session) 
	 &sql(update Auth.SysUser set session=:session where login=:login)
	 q  1 
	}
 q  0 
}

ClassMethod Create(login)
{
 &sql(insert into Auth.SysUser(login) values(login))
}
///возвращает текущего пользователя
ClassMethod CurrentUser(session) as %String
{
 &sql(select login into :login from Auth.SysUser where session=:session)
 q:SQLCODE= 0  login
 q ""
}
}


И примерно так main.csp или другая csp-шка
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<script language=cache method=OnPreHTTP arguments= "" returntype=%Boolean>
 s login=##class(Auth.SysUser).CurrentUser(%session.SessionId)
 if (/*если пользователю нельзя заходить на эту страницу или логин не был произведен */)
  { //Какие-то действия
    q  0 
  }
 q  1 
</script>

<html>
 ......
</html>


Да, так как каше - все-таки объектная система, то например метод OnPreHTTP можно определить в классе и наследовать от него CSP-шки тегом
Код: plaintext
<CSP:CLASS SUPER="какой-то класс">

Примерно так, я думаю.
В этом примере один пользователь может зайти только с одной машины. Если он зайдет с другой сессией, то предыдущая сотрется.
...
Рейтинг: 0 / 0
Доступ!
    #34513417
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так и выкладывают "исходники"
...
Рейтинг: 0 / 0
Доступ!
    #34513564
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВот так и выкладывают "исходники"
А вы про что?
...
Рейтинг: 0 / 0
Доступ!
    #34515154
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я что-то не очень доверяю сессиям... :( Т.к. они "исчезают" через некоторый таймаут...
В основном используем %request
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Доступ!
    #34515327
oxcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ОГРОМНОЕ СПАСИБО всем кто ответил! Постараюсь разобраться!
...
Рейтинг: 0 / 0
Доступ!
    #34515694
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я что-то не очень доверяю сессиям... :( Т.к. они "исчезают" через некоторый таймаут...
Запросы можно гонять в отдельном окне или фрейме.
...
Рейтинг: 0 / 0
Доступ!
    #34516108
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело не в запросах... А в самой природе сессий...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Доступ!
    #34516170
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну правильно, такая у них природа, мрут без работы.
Заставляйте их работать ;-)
...
Рейтинг: 0 / 0
Доступ!
    #34516746
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Заставляйте их работать ;-)
Так мы сосвоим ПО не работаем
...
Рейтинг: 0 / 0
Доступ!
    #34517211
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как еще с ПО нужно работать.

Если ПО работает (включено) - сесиия живет. Не работает (выключено) - сессия дохнет.

Да здраствует сессии неработающего ПО ?
...
Рейтинг: 0 / 0
Доступ!
    #34517953
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наши пользователи очень любят зайти в приложение и ничего в нем не делать... Таймаут кончается... Сессия помирает... :(
Потом они загораются желанием поработать но уже поздно. :)
Вот отсюда ноги и растут...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
25 сообщений из 46, страница 1 из 2
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Доступ!
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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