powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Доступ!
46 сообщений из 46, показаны все 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
Доступ!
    #34517972
Alexandr Minzer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в своих CSP приложениях "заставляем работать" следующим образом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<SCRIPT language="JavaScript">
var fun=setTimeout("ReCon();", 600000 );
function ReCon()
{
	var rez=#server(Lib.Utils.ReCon())#;
	var fun=setTimeout("ReCon();", 600000 );
	return true;
}
</SCRIPT>
Метод ReCon() возвращает, например, 1.
...
Рейтинг: 0 / 0
Доступ!
    #34518012
aleshap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно использовать совместно куки и сессии, тогда не надо постоянно поддерживать их жизнь.
...
Рейтинг: 0 / 0
Доступ!
    #34518123
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleshapМожно использовать совместно куки и сессии
Примерчик с куками можете подогнать?

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

Дык про то и речь - почему приложение себя так ведет ? Оператору предположим делать нечего - а приложению ? Даже TCP-приложение "поддерживают коннект" - не так ли.
...
Рейтинг: 0 / 0
Доступ!
    #34519651
VadimF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотел бы пару моментов написать, но не про сессии (поведение, которых, кстати, изменилось в Cache' 5.1. по сравнению с более ранними версиями), а про хранения пользователей, роли пользователей, их привелегии и т.д.

Для хранения информации о пользователях рекомендую использовать стандартные возможности Cache' 5.1, 5.2, 2007.1, ...

Нужно завести роли: пользователь, студент, преподаватель, декан, администратор.

Далее можно создать набор ресурсов Вашего приложения в Портале Управления Системой.
Это описано в документации Cache' .

Назначить в портале права ролей пользователей на эти ресурсы.

В Вашем приложении Вы можете в определенных местах (например, где формируется меню доступа к страницам) проверять есть ли права у пользователя:

Код: plaintext
$SYSTEM.Security.Check("Teacher Resource", "WRITE")

Если право есть, отрисовывать или давать возможность перехода на страницу по ссылке.
Если нет - не пускать.

То есть можно воспользоваться готовой системой безопасности Cache'.

В ZEN все это сделано автоматически. Можно ставить в соответствие ресурс и компонент (например, пункт меню).
Если есть возможность лучше делать Web-приложение на ZEN, но для этого нужно иметь Cache' 2007.1.


Вадим
...
Рейтинг: 0 / 0
Доступ!
    #34522220
oxcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я так понимаю, что на каждую таблицу надо установить роли, и потом при обращении к этой таблицы проверять?
...
Рейтинг: 0 / 0
Доступ!
    #34523488
Jannet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У нас темы дипломных проектов схожи! у меня тоже сайт про униветситет! ты не мог бы выслать мне свой,jakonda666@mail.ru? я могу своим поделиться.....не могу администрирование сделать никак(((((
...
Рейтинг: 0 / 0
Доступ!
    #34523600
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЯ так понимаю, что на каждую таблицу надо установить роли, и потом при обращении к этой таблицы проверять?
Ну по крайней мере в каше 5.2 и ниже разрешения на таблицу не установите.
Лучше разрешения ставить на интерфейс, и проверять - эта страница разрешена? А эта кнопка на странице разрешена?
...
Рейтинг: 0 / 0
Доступ!
    #34523926
Alesha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa aleshapМожно использовать совместно куки и сессии
С куками проблема... Пользователь их может отключить... :(
Отключить можно все... и куки и скрипты и flash... можно и браузер удалить и винду...
Думаю это уже проблема пользователей, другое дело, то что их об этом необходимо оповещать.
...
Рейтинг: 0 / 0
Доступ!
    #34524807
VadimF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н. авторЯ так понимаю, что на каждую таблицу надо установить роли, и потом при обращении к этой таблицы проверять?

Ну по крайней мере в каше 5.2 и ниже разрешения на таблицу не установите.
Лучше разрешения ставить на интерфейс, и проверять - эта страница разрешена? А эта кнопка на странице разрешена?

Не совсем понимаю, почему?
На уровне SQL в Cache' всегда было можно ограничить доступ к таблицам, видам и хранимым процедурам.

В Cache' 2007.1. будет еще разграничение доступа к таблице на уровне записей.


Другое дело, что если говорить про создания Web-приложения, то Вы правы, более правильно разграничить доступ на уровне приложения к фрагментам Web-приложения.

С уважением, Вадим
...
Рейтинг: 0 / 0
Доступ!
    #34524895
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VadimF
Блок А.Н.Ну по крайней мере в каше 5.2 и ниже разрешения на таблицу не установите.
На уровне SQL в Cache' всегда было можно ограничить доступ к таблицам, видам и хранимым процедурам.

Ага, соврал :-(.
Хотел сказать, что нельзя таблицам присвоить имя ресурса.
Ведь для ресурса в каше 5можно проверить, доступен ли он
$System.Security.Check
А как это сделать для таблицы?
...
Рейтинг: 0 / 0
Доступ!
    #34525153
oxcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выкладываю работу!
Может поможет немного разобраться!

Файл Diplom.xml импортировать локально в Cache 5
Папку "Images" скопировать на диск C:\
...
Рейтинг: 0 / 0
Доступ!
    #34537882
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi!

VadimF
То есть можно воспользоваться готовой системой безопасности Cache'.
Для диплома, безусловно, можно. Но в боевой системе все не так просто.

1. Если что-то работало в предыдущей версии Cache, то оно может не заработать в следующей
или будет работать по-другому. Cache весьма быстро развивается и меняется. Для будущих
заказчиков это показатель крутизны, а для существующих - проблема. Поскольку разработчикам
и тестерам нужно забивать в план работ довольно серъезные сроки на перенос системы на другую
версию Cache. И это нередко останавливает от попыток использовать что-то готовое крайне быстро
эволюционирующее. Выше крыши хватает мелкософта, который вынуждает всех конкурентов
тратить время не на развитие прикладных систем, а на постоянный перенос их с одной версии
винды на другую.

2. На одном сервере может крутиться несколько баз с весьма разной архитектурой безопасности.
А пользователи и привилегии в Cache назначаются на сервер в целом, а не на конкретную базу с конкретным
приложением. Одно дело, когда есть DBA, который отвечает за функционирование сервера в целом,
создание бекапов и т.д., но ему нет дела до особенностей бизнес-логики конкретного приложения,
а совсем другое, когда администратор безопасности именно конкретного приложения добавляет/удаляет
пользователей, раздает доступ на ресурсы в соответствии с бизнес-логикой приложения, но ему нет
дела до технических проблем, бекапов, производительности, наличия места на дисках, знания, что
в каких таблицах находится и т.д.

И если разные приложения разработаны разными независимыми компаниями, то в целях
избежания головной боли от совместимости лучше будет ставить их на разные физические
сервера со своей Cache. Но тут уже совсем другая лицензия нужна.

3. Вопрос, тесно связанный с предыдущим пунктом, это невозможность бэкапа информации
по пользователям, их правам доступа к данным вместе с самими данными конкретной базы.
И соответственно, востановления из бэкапа так, чтобы это не повляло на пользователей,
других приложений, которые крутятся на этом сервере.

Или, к примеру, стандартная процедура апгрейда приложения. Делается бекап боевой базы с первого
сервера, восстанавливается на физически отдельном втором тестовом сервере (где может стоять другая
версия Cache), либо если боевой сервер можно остановить, то в него втыкается винчестер, туда
копируется CACHE.DAT и этот винчестер переносится на второй сервер. Понятно, что копировать
базу по сети бессмысленно. На тестовом сервере ставится новая версия приложения, проверяется
и отрабатывается процедура перехода. Затем она воспроизводится на боевом сервере (либо просто
юзеров переключают с первого сервера на второй). Вопрос: как перенести информацию о 500
пользователях, привилегиях и правах доступа с первого сервера на второй? Попытка просто
скопировать базы CACHESYS и CACHEAUDIT привела к неработоспособности второго
сервера из-за того, что он оказался в другом Windows домене. Т.е. завязка на аутентификацю
операционной системы или Kerberos - рискованная штука. Бэкап базы трехлетней давности может
запросто не подняться, если одновременно с ним не поднять бэкап на контроллере домена.

4. Если разграничение доступа является существенной частью бизнес-логики приложения, то вероятнее всего
будут и особые требования к функционалу системы безопасности. Казалось бы, вполне примитивное
требование, что рядовой пользователь, не являясь админом, должен иметь возможность поменять пароль
сам себе. В то-же время, админ не должен знать пароли пользователей и сам их менять. Разве что задавать
начальный пароль пользователю при регистрации в системе нового пользователя, но должен поставить
галочку "Требовать от пользователя смены своего пароля при первом входе в систему".
Тем не менее, мне не удалось найти такой простой возможности "в готовой" системе безопасности Cache.

То есть, если заказчик такую функцию потребует, то останется только сказать: "Обращайтесь к Интерсистемсу,
и тогда, возможно, когда-нибудь..."

А кроме такой мелочи, могут быть и более интересные вещи. У нас, к примеру иерархическая система
групп (ролей). В состав группы могут входить другие группы и пользователи, в то-же время пользователь
и группа может входить в состав нескольких групп. Кроме разрешений бывают еще и запреты. Если у группы
"А" есть разрешение на ресурс "1" и ресурс "2", а у группы "Б" есть запрет на ресурс "2" (про ресурс "1"
ничего не сказано), то пользователи, входящие только в группу "А" получат разрешение на оба ресурса,
входящие только в группу "Б" - ни на один ресурс, входящие и в группу "А" и в группу "Б" - разрешение
только на ресурс "1". Когда в системе под 500 пользователей, гибкость и удобство системы разграничения
доступа, а также пользовательский интерфейс имеют значение. Попробуйте реализовать Drag & Drop
пользователей из группы в группу на WEB - интерфейсе встроенной в Cache системы безопасности.
Вообще, перевод администрирования Cache на CSP - не самое удобное IMHO с точки зрения возможностей
пользовательского интерфейса решение. Интерфейс можно улучшить, если сделать навороченный апплет
на яве, но тогда чем он будет отличаться от старого доброго "толстого" клиента? Разве что
кроссплатформенностью.

С каждым пользователем и группой может быть ассоциирована масса информации и индивидуальных настроек
внешнего вида приложения, а не только логин или пароль. Например, рабочий телефон, e-mail, фотография
и т.д. Часть этой информации может поменять только администратор, часть - сам пользователь.

Да и создание/удаление/перемещение из группы в группу пользователя может потребовать выполнения
определенных операций. К примеру, удаление пользователя, это не DELETE FROM. Просто помечается,
что пользователь больше не может входить в систему, часть информации удаляется (например личные
почтовые ящики вместе с сообщениями), но основная идентифицирующая часть остается. Дело в том,
что ведется журнал, и может возникнуть вопрос, "кто менял этот документ три года назад" и тогда
нужно получить информацию по пользователю, даже если он пару лет назад уволился и с тех пор
доступа в систему не имеет.

Возможности перехватить операцию встроенной системы безопасности Cache по созданию/удалению/и т.д.
пользователей и выполнить какие-то собственные действия не имеется. Раньше (в Cache 5.0) было можно
перехватить логин к ODBC, выполнить собственные проверки и даже заменить имя пользователя. В частности,
это давало возможность при подключении пользователя задавать логин и пароль не тот, что указан в SQL-менеджере,
а тот, что указан в моем приложении. После проверки пароля, моя функция заменяет имя на _SYSTEM
(или любое другое) и с точки зрения Cache пользователь выглядит, как _SYSTEM и для него используются
гранты, заданные для _SYSTEM, а с точки зрения моего приложения он выглядит как мой пользователь.
То есть, можно было задействовать как встроенную систему безопасности SQL так и мою логику,
сочетая их возможности. Сейчас (Cache 5.2) возможность переопределения функции логина пропала. См. пункт 1.
____________________________
С уважением, Лисеев Дмитрий.
http://private.peterlink.ru/dimik/
PGP key fingerprint: 09 28 74 28 6C 39 62 29 2E CB 95 03 4F 04 33 73

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Доступ!
    #34537883
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi!

VadimF
В Cache' 2007.1. будет еще разграничение доступа к таблице на уровне записей.
Угу. И сильно подозреваю, что по своим возможностям не дотянет до того,
что я сделал еще 6 лет назад.

Учитывая, что логика разграничения доступа сильно зависит от специфики приложения,
а реализовать ее на триггерах - раз плюнуть. Допустим, есть у нас дерево папок. То есть
в таблице имеется поле Parent с внешним ключем родительской папки. Перенос папки
из одной родительской в другую с точки зрения сервера это UPDATE на запись
переносимой папки с изменением Parent. А вот с точки зрения юзера переносимая папка
не меняется, зато производится удаление из старой родительской и вставка в новую родительскую.
Юзер не оперирует терминами SQL - операций. Ему надо не только право на изменение
атрибутов и удаление папки, но и отдельно право на создание/удаление в ней дочерних подпапок.
____________________________
С уважением, Лисеев Дмитрий.
http://private.peterlink.ru/dimik/
PGP key fingerprint: 09 28 74 28 6C 39 62 29 2E CB 95 03 4F 04 33 73

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Доступ!
    #34549893
Фотография u78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaА я что-то не очень доверяю сессиям... :( Т.к. они "исчезают" через некоторый таймаут...

некий тайм аут можно изменить, я у себя поставил 28000 секунд и красота наступила.
а сессию закрывать при наступлении события onunload на страничке.
...
Рейтинг: 0 / 0
Доступ!
    #34549990
VadimF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий, не могу сейчас, к сожалению, подробно ответить на Ваше сообщение.
Отмечу только один момент:

Dmitry V. Liseev
3. Вопрос, тесно связанный с предыдущим пунктом, это невозможность бэкапа информации
по пользователям, их правам доступа к данным вместе с самими данными конкретной базы.
И соответственно, востановления из бэкапа так, чтобы это не повляло на пользователей,
других приложений, которые крутятся на этом сервере.


Код: 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.
%SYS>D ^SECURITY
 
 1 ) User setup
 2 ) Role setup
 3 ) Service setup
 4 ) Resource setup
 5 ) Application setup
 6 ) Auditing setup
 7 ) Domain setup
 8 ) SSL configuration setup
 9 ) System parameter setup
 10 ) Exit
 
Option?  9 
 
 1 ) Edit system options
 2 ) Edit authentication options
 3 ) Edit LDAP options
 4 ) Display system options
 5 ) Export All Security settings
 6 ) Import All Security settings
 7 ) Exit
 
Option?  5 

С уважением, Вадим
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Доступ!
    #39605448
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н. для ресурса в каше 5можно проверить, доступен ли он
$System.Security.Check
А как это сделать для таблицы?Спустя 11 лет задаю тот же вопрос: можно ли проверить разрешения пользователя для таблицы?
...
Рейтинг: 0 / 0
Доступ!
    #39605452
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Блок А.Н. для ресурса в каше 5можно проверить, доступен ли он
$System.Security.Check
А как это сделать для таблицы?Спустя 11 лет задаю тот же вопрос: можно ли проверить разрешения пользователя для таблицы?Можешь уточнить, какие разрешения для таблицы?
В какой момент, и для кого нужно проверять разрешения?
...
Рейтинг: 0 / 0
Доступ!
    #39605489
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor,

например, разрешения на вставку или удаление строк в некоторую таблицу. Я понимаю, что там все может быть гораздо тоньше, но мне достаточно этого.
...
Рейтинг: 0 / 0
Доступ!
    #39605591
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
$system.SQL.CheckPriv()
Код: sql
1.
2.
Do $SYSTEM.SQL.CheckPriv($username,"1,HHR.ProductionValues","s,i,u,d","USER",1)
Do $SYSTEM.SQL.CheckPriv("Miranda","3,SQLUser.Person","s","PRODUCT",0)
...
Рейтинг: 0 / 0
Доступ!
    #39605814
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor,

На этот раз, хотя я делаю это не на Каше 5, а аж на 2010.2, в которой эти возможности уже должны быть, удача оказалась не на моей стороне. Сервер собран с какой-то странной версией класса %SYSTEM.SQL, в которой этих методов нет. Попробовал всех перехитрить и посмотреть, как компилируется EmbeddedSQL, но оказалось, что ESQL не использует безопасность.
Но буду иметь в виду, спасибо :-)
...
Рейтинг: 0 / 0
46 сообщений из 46, показаны все 2 страниц
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Доступ!
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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