powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Авторизация
31 сообщений из 31, показаны все 2 страниц
Авторизация
    #38269867
Sh.alena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Я новичок в Cache, не могу доделать свою страницу авторизации. Я создала класс Index.csp. В нем имеется такой вот код:
Код: html
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.
<html>

<head>
</style>

<!-- Put your page Title here -->
<title>	Hello world!!!</title>
</head>

<body  onload="pageLoad();">

<text >
<text >


		<!-- Put your page code here -->
		My page body
		</body>
</html>

<script language="javascript">
	// данный код взят из системных классов
	function pageLoad()
	{
		
		if (self.document.Login && self.document.Login.CacheUserName) {
			self.document.Login.CacheUserName.focus();
			self.document.Login.CacheUserName.select();
		}
		return true;
	}
	

	</script>


Авторизация насколько я понимаю проходит, но не получается сделать переадресацию в случае успешной аутентификации на другой класс. Не подскажете как это сделать? Заранее большое спасибо!
...
Рейтинг: 0 / 0
Авторизация
    #38269943
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sh.alena , мне интересно несколько моментов:
- какой смысл помещать скрипт после </html>?
- где сама проверка авторизации?

Если делаешь тестовый пример - так делай его полным...
...
Рейтинг: 0 / 0
Авторизация
    #38269945
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sh.alenaЯ создала класс Index.csp
Это не класс, это страница...
...
Рейтинг: 0 / 0
Авторизация
    #38269962
Sh.alena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa Sh.alena , мне интересно несколько моментов:
- какой смысл помещать скрипт после </html>?
- где сама проверка авторизации?

Если делаешь тестовый пример - так делай его полным...

Это системный код Cache, он работает даже после тега </html>

krvsa Sh.alena
Это не класс, это страница...


Да, вы правы, ошиблась)

У вас есть рабочий код авторизации?
...
Рейтинг: 0 / 0
Авторизация
    #38269967
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sh.alenaЭто системный код Cache, он работает даже после тега </html>
Есть определенные правила структуры ХТМЛ документа - нужно их соблюдать. Откуда взялся тот "системный код Cache"? Это вообще JavaScript...
...
Рейтинг: 0 / 0
Авторизация
    #38269972
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sh.alenaУ вас есть рабочий код авторизации?
У меня есть... И несколько. Только не факт что какой-то из них подойдет тебе... Т.к. я х/з что тебе нужно в итоге...
...
Рейтинг: 0 / 0
Авторизация
    #38269986
Sh.alena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsaSh.alenaЭто системный код Cache, он работает даже после тега </html>
Есть определенные правила структуры ХТМЛ документа - нужно их соблюдать. Откуда взялся тот "системный код Cache"? Это вообще JavaScript...

Я взяла эту часть кода вот здесь: docs.intersystems.com/csp/samples/menu.csp

Весь код страницы выглядит следующим образом:
Код: html
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.
62.
63.
64.
65.
66.
67.
<html><head>
  <title>Login CACHE20102</title>
 
<link rel="stylesheet" type="text/css" href="/csp/sys/intersystems.css">
<script language="javascript">
// called when page is loaded
function pageLoad()
{
 // see if we can give focus to the UserName field:
 if (self.document.Login && self.document.Login.CacheUserName) {
  self.document.Login.CacheUserName.focus();
  self.document.Login.CacheUserName.select();
 }
 return true;
}
 </script>
</head>
  <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" onload="pageLoad();">
  

 <table width="100%" border="0" cellpadding="0" cellspacing="0" style="background: #388CCC; margin:0px;">
 <tr>
 <td nowrap bgcolor="#FFFAE7" valign="top" align="left"><a target="_top" href="http://www.intersystems.com/index.html"><img src="/csp/sys/images/logo-topl-intersystems.gif" border="0"></a></td>
    <td nowrap bgcolor="#FFFAE7" valign="top" align="left">
    <div class="wizardltlabel" style="margin-top:10px;"><span style="font-size:8pt; padding-right:5px;">Server:</span><b>docs.intersystems.com</b>&nbsp;</div>
    <div class="wizardltlabel" style="margin-top:10px;"><span style="font-size:8pt; padding-right:5px;">Instance:</span><b>CACHE20102</b>&nbsp;</div>
 <td width="370"><img src="/csp/sys/images/opposite-pic-intersys.jpg" alt="Login page" border="0"></td>
 <td width="60%" bgcolor="#388CCC" valign="bottom">&nbsp;</td>
 </tr>
  <tr>
  <td colspan="4" bgcolor="#D36D00"><img src="/csp/sys/images/spacer.gif" width="100%" height="2" alt="-" border="0"></td>
  </tr>
  </table>
<table border="0" align="center">
  <tr>
 <td colspan="10" align="center">
  <table border="0" class="LayoutMain" width="100%" cellpadding="0" cellspacing="0">
  <tr><td class="LayoutContentCol" width="80%" align="left"><br>
 <div class="Text1" style="padding-bottom: 5px; color: darkblue; font-size: 0.9em;">Please enter your user name and password to log in:</div>
 </td></tr>
 <tr><td align="center">
 <form name="Login" method="post" action="/csp/samples/menu.csp">

<input type="hidden" name="CSPCHD" value="0b200j010000319j7IDiqr0000909KFgocrKv9SKpXZsm6aA--"/>
<input type="hidden" name="CSPRQN" value="E"/>

 <table class="AutoForm">
 <tr><td>
 <tr class="AutoForm" valign="center">
 <td class="AutoFormCaption" nowrap>User Name:</td>
 <td class="AutoFormControl" nowrap>
   <input type="text" size="40" name="CacheUserName" value="">&nbsp;
  </td>
  </tr>
 <tr>
 <td class="AutoFormCaption" nowrap>Password:</td>
 <td class="AutoFormControl" nowrap>
  <input type="password" size="25" name="CachePassword">&nbsp;
 </td>
 </tr>
 <tr>
  <td>&nbsp;</td>
  <td><input type="submit" name="CacheLogin" value="Login"></td>
 </tr>
 </table>
 </form>
</body></html>


И как она делает проверку логина и пароля?
...
Рейтинг: 0 / 0
Авторизация
    #38269995
Sh.alena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsaSh.alenaУ вас есть рабочий код авторизации?
У меня есть... И несколько. Только не факт что какой-то из них подойдет тебе... Т.к. я х/з что тебе нужно в итоге...

Мне нужно сделать проверку логина и пароля, в случае если и то и другое введено верно, я делаю переадресацию на другую страницу.
...
Рейтинг: 0 / 0
Авторизация
    #38270005
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sh.alenaЯ взяла эту часть кода вот здесь: docs.intersystems.com/csp/samples/menu.csp
Как называется та страница?
Я как раз на неё тебя и хотел вывести... Но никак не найду нужную ссылку в том меню...


Sh.alenaИ как она делает проверку логина и пароля?
Там нет проверки...
Просто запрашиваются поля и данные формы передаются на страницу указаную в action формы...

Код: html
1.
<form name="Login" method="post" action="/csp/samples/menu.csp">
...
Рейтинг: 0 / 0
Авторизация
    #38270012
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sh.alenaМне нужно сделать проверку логина и пароля
С чем будет осуществляться проверка? Т.е. где те логины с паролями хранятся? Проверку делать на этой же странице или на другой?
...
Рейтинг: 0 / 0
Авторизация
    #38270036
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sh.alena ,

Для перехода на другую страницу:<html>
<head>
<script language="javascript">
function test()
{
  self.document.location='#url(another.csp)#';
}
</script>
</head>
<body>
<input type="button" value="Перейти" onclick="test()">
</body>
</html>Также Вы можете создать свою страницу логина на основе %CSP.Login.cls , унаследовавшись от этого класса.

Советую посмотреть Caché Server Pages QuickStart Tutorial и Caché Web Applications Tutorial .
Готовый пример страницы логина можно найти в одном из уроков .
...
Рейтинг: 0 / 0
Авторизация
    #38270042
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот еще один пример из доки ...
...
Рейтинг: 0 / 0
Авторизация
    #38270043
Sh.alena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Достаточно добавить этот код на любую csp страницу
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<script language="javascript">
// called when page is loaded
function pageLoad()
{
 // see if we can give focus to the UserName field:
 if (self.document.Login && self.document.Login.CacheUserName) {
  self.document.Login.CacheUserName.focus();
  self.document.Login.CacheUserName.select();
 }
 return true;
}
 </script>


Он автоматически вызовет форму авторизации реализованную в Cache. К которой у меня нет доступа.
Код: html
1.
<body  onload="pageLoad();">


Мне нужно сделать переход на другую страницу после проверки логина и пароля.
...
Рейтинг: 0 / 0
Авторизация
    #38270055
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sh.alenaМне нужно сделать переход на другую страницу после проверки логина и пароля.
Т.е. проверять на этой странице... И в случае успеха переходть на другую страницу?

А с чем будешь проверять-то? С какими логинами и паролями?
...
Рейтинг: 0 / 0
Авторизация
    #38270063
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sh.alenaДостаточно добавить этот код на любую csp страницу
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<script language="javascript">
// called when page is loaded
function pageLoad()
{
 // see if we can give focus to the UserName field:
 if (self.document.Login && self.document.Login.CacheUserName) {
  self.document.Login.CacheUserName.focus();
  self.document.Login.CacheUserName.select();
 }
 return true;
}
 </script>


Он автоматически вызовет форму авторизации реализованную в Cache. К которой у меня нет доступа.
Если бы ты знала как глубоко ты ошибаешся...

И к Каше он вообще никакого смысла не имеет...
...
Рейтинг: 0 / 0
Авторизация
    #38270066
Sh.alena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Логин и пароль пользователя хранится в %SYS.security.Users.cls.
Как это реализовано в %CSP.Login.cls?
...
Рейтинг: 0 / 0
Авторизация
    #38270122
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sh.alena , вот тебе "набросок"...

Код: html
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.
<!DOCTYPE html>
<html>
<head>
<!--
<script src="http://code.jquery.com/jquery-latest.js"></script>
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
function test() {
	var login=document.getElementById('login').value;
	var password=document.getElementById('password').value;
	var ok=#server(..cTest(login,password))#;
	if (ok==1) return true;
	alert(ok);
	return false;
};
</script>

<csp:method name="cTest" arguments="Login:%String,Password:%String" returntype="%String">  
   // Проверка логина и пароля
   // Если проверка успешна - возвращай 1
   q 1
</csp:method>

</head>
<body>
<form name='frm' action='тут_укажи_нужную_страницу' onsubmit='return test();'>
	<label>Логин
		<input type='text' id='login' />
	</label>
	<label>Пароль
		<input type='password' id='password' />
	</label>
	<input type='submit' value='Регистрация' />
</form>
</body>
</html>
...
Рейтинг: 0 / 0
Авторизация
    #38270142
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sh.alenaЛогин и пароль пользователя хранится в %SYS.security.Users.cls.
Что-то не нахожу у себя в доке описание такого класса...

Sh.alenaКак это реализовано в %CSP.Login.cls?
Я х/з...
...
Рейтинг: 0 / 0
Авторизация
    #38270150
Sh.alena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa, спасибо огромное!!!! А у вас есть какой-нибудь примерчик проверки логина и пароля, которые находятся в %SYS.security.Users.cls?
...
Рейтинг: 0 / 0
Авторизация
    #38270154
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sh.alenaА у вас есть какой-нибудь примерчик проверки логина и пароля, которые находятся в %SYS.security.Users.cls?
У меня и класса-то такого в доке нет...
...
Рейтинг: 0 / 0
Авторизация
    #38270159
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sh.alenaЯ взяла эту часть кода вот здесь: docs.intersystems.com/csp/samples/menu.csp
Весь код страницы выглядит следующим образом:Код страницы нужно смотреть не в браузере, а исходный.
В исходном коде нет такого:
Код: html
1.
<input type="hidden" name="CSPCHD" value="0b200j010000319j7IDiqr0000909KFgocrKv9SKpXZsm6aA--"/>


Посмотрите файл %CacheHome%\CSP\samples\menu.csp у себя локально на машине.

Надо полагать, Вы используете встроенную аутентификацию CSP по паролю. Тогда с Вашей стороны вообще ничего не нужно проверять.
Просто введите логин/пароль и дальше автоматически будет переход на ранее запрошенную страницу.
А текущего пользователя в своём коде можно узнать с помощью $USERNAME
...
Рейтинг: 0 / 0
Авторизация
    #38270171
Sh.alena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa, странно, у меня есть. В системной области, пакет security, класс Users.cls. Нашла это здесь:
docs.intersystems.com/ens20121/csp/documatic/%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=%25SYS&CLASSNAME=%25SYSTEM.Security.Users
...
Рейтинг: 0 / 0
Авторизация
    #38270199
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sh.alenaкоторые находятся в %SYS.security.Users.cls ?
Sh.alenaу меня есть. В системной области, пакет security, класс Users.cls .
Обманщица!!!
...
Рейтинг: 0 / 0
Авторизация
    #38271209
Sh.alena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Никак не могу разобраться с проверкой. Ни у кого нет примера такой проверки на правильность введенного логина и пароля? Мне нужно взять логин и пароль из системного класса, в котором хранятся все пользователи (сист-ая область.security.Users.cls).
...
Рейтинг: 0 / 0
Авторизация
    #38271240
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sh.alena ,

Посмотрите метод %CSP.Session:Login()

Можно узнать для чего понадобилось самостоятельно проверять системные логин/пароль, а не оставить это на откуп стандартной страницы авторизации, которая помимо прочего обрабатывает Kerberos и двухфакторную аутентификацию?
...
Рейтинг: 0 / 0
Авторизация
    #38271245
Фотография П.С.М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sh.alena,
может подойдет вам $SYSTEM.Security.Login?
Код: sql
1.
2.
3.
4.
5.
6.
>w $username
UnknownUser
>w $SYSTEM.Security.Login("_system","SYS")
1
>w $username
_SYSTEM



ссылка на документацию
...
Рейтинг: 0 / 0
Авторизация
    #38271248
Фотография П.С.М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit Sh.alena ,

Посмотрите метод %CSP.Session:Login()

Можно узнать для чего понадобилось самостоятельно проверять системные логин/пароль, а не оставить это на откуп стандартной страницы авторизации, которая помимо прочего обрабатывает Kerberos и двухфакторную аутентификацию?
поддержу
...
Рейтинг: 0 / 0
Авторизация
    #38271252
Sh.alena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit, вы правы, это не самая лучшая идея, а вы не могли бы показать код унаследованного класса и его вызов на CSP странице?
...
Рейтинг: 0 / 0
Авторизация
    #38271277
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
П.С.М.может подойдет вам $SYSTEM.Security.Login? CSP Connections and Other Special Cases
...
Рейтинг: 0 / 0
Авторизация
    #38271677
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sh.alenaservit, вы правы, это не самая лучшая идея, а вы не могли бы показать код унаследованного класса и его вызов на CSP странице?
ПримерClass test.login Extends %CSP.Login
{

Parameter DOMAIN = "TEST";

ClassMethod DrawTitle(pTitle As %String)
{
  Set msgs("cmdServer") = "Сервер"
  Set msgs("cmdInstance") = "Экземпляр"
  Set msgs("msgServer") = "Имя машины, на которой работает эта система"
  Set msgs("msgInstance") = $ZCVT($ZV,"O","HTML")
  Set msgs("ProductName") = $ZCVT("Портал Управления","O","HTML")
  Set msgs("tPower") = $ZCVT("Работает на Zen","O","HTML")
  Set msgs("tBy") = $ZCVT("от InterSystems","O","HTML")
  
  Do ..DrawTitleSection( .msgs )
}

ClassMethod DrawTitleSection(ByRef msgs As %String)
{
  Set tLang = $$$SessionLanguage
  Set cmdServer = msgs("cmdServer")
  Set msgServer = msgs("msgServer")
  Set cmdInstance = msgs("cmdInstance")
  Set msgInstance = msgs("msgInstance")

  Set ServerName = $zu(110)
  Set InstanceName = $P($zu(86),"*",2)
  Set ProductName = msgs("ProductName")
  Set tPower = msgs("tPower")
  Set tBy = msgs("tBy")
  &html<<table class="portalTitle" id="group_1" width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr valign="bottom">
  <td width="99%" align="left">
    <div class="portalTitleInfoBox">
    <table border="0">
    <tr>
    <td class="portalTitleInfoLabel" title="#(msgServer)#">#(cmdServer)#:</td><td class="portalTitleInfoVal">#(ServerName)# </td>
    <td class="portalTitleInfoLabel" title="#(msgInstance)#">#(cmdInstance)#:</td><td class="portalTitleInfoVal">#($P($zu(86),"*",2))# </td>
    </tr>
    </table>
    </div>
  </td>
  <td width="10%" align="right" valign="top">
  <div class="portalLogoBox">
  <div class="portalLogo" title="#(tPower)#">#(ProductName)#</div>
  <div class="portalLogoSub">#(tBy)#</div>
  </div>
  </td>
  </tr>
  </table>>
}

}
При желании Вы можете переопределить и другие методы.
Чтобы этот класс задействовать, нужно его прописать в настройках безопасности для Вашего веб-приложения.
Всё это расписано в одном из уроков Caché Security Tutorial , в частности здесь (код для примеров идёт в комплекте).

Советую также посмотреть:
  • Глава 17: Example Two: Zen (и далее)
  • Глава 22: Example Three: Delegated Authentication (и далее)
  • Часть III: Securing Applications (Главы 1-11)
...
Рейтинг: 0 / 0
Авторизация
    #38271704
Sh.alena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit, спасибо огромное, очень помогло!
...
Рейтинг: 0 / 0
31 сообщений из 31, показаны все 2 страниц
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Авторизация
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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