Правильно организованная авторизация

Программирование на Active Server Pages и VBScript.
abbot
Обычный пользователь
Обычный пользователь
 
Сообщения: 54
Зарегистрирован: 08.06.2002 (Сб) 10:45
Откуда: Uzbekistan

Правильно организованная авторизация

Сообщение abbot » 24.07.2005 (Вс) 13:06

Кто подскажет метосику или принцип организации авторизации на веб страничке.
К примеру как сделать так что бы определення страница грузилась только для авторизованных людей и что бы прямой доступ был закрыт.
Например. Я начинаю со стрницы Логина, далее попадаю на страницу самого приложения. Как сделать так что бы при моем прямом обращении с адресной строки в браузере на страницу приложения происходила проверка что человек не авторизован а значит ему надо сначала на страницу логина
He is watching

abbot
Обычный пользователь
Обычный пользователь
 
Сообщения: 54
Зарегистрирован: 08.06.2002 (Сб) 10:45
Откуда: Uzbekistan

Сообщение abbot » 27.07.2005 (Ср) 8:57

Попробую пойти дальше; так как пока вижу что ответов нет.
Использую ASP & VBscript
Со страницы логина я кидаю юзера на страницу редиректа где происходит проверка правильности введенных имени и пароля. Если все правильно то идет переход на страницу с данными если нет то юзер попадает на страницу с логином. Итак на странице редиректа нет никаких форм; только одна надпись Подождите. Я могу конечно передать имя и пароль на страницу редиректа; но не могу найти способ как правильно передать имя пользователя на страничку с данными в случае успешного логина.
<input type="hidden"> не работает так как формы на странице редиректа нет.
Какие нибудь предложения?
Пробовал было строку из интернета:
test.asp?var=UserName модифицировать. Но что то тут не правильно; не работает.
He is watching

OldRunaways
Новичок
Новичок
Аватара пользователя
 
Сообщения: 44
Зарегистрирован: 10.07.2004 (Сб) 17:13

ASP-шная Эха - Мёртвая Эха...

Сообщение OldRunaways » 28.07.2005 (Чт) 16:41

...но, попробуем помочь :-)

На вскидку в голову приходит 2-а варианта:

1) Передавать все необходимые данные при помощи сессионнх переменных.
2) Передавать эти данные при использовании куков (Response.Cookies - писать и Request.Cookies - читать).

P.S. test.asp?var=UserName ...прекрасно работает если ты читаешь данные следующим образом: var = Request.QueryString("var"), но сам понимаешь, что о безопасности в этом случае речи идти не может.

abbot
Обычный пользователь
Обычный пользователь
 
Сообщения: 54
Зарегистрирован: 08.06.2002 (Сб) 10:45
Откуда: Uzbekistan

Сообщение abbot » 30.07.2005 (Сб) 10:44

Я вот тоже склонился к передаче посредством сессионых переменных. Правда много возни и внимательно надо их отслеживать; но что делать :D

Спасибо
He is watching

Рома
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 28.10.2005 (Пт) 16:04

Сообщение Рома » 28.10.2005 (Пт) 18:19

Пожалуй тут можно только выложить готовый код, если интересует:

Вот он собственно:

Код: Выделить всё
Function ShowContent()
ShowContent = FALSE
If IsNewUser() Then
  Response.Redirect("login.asp")
Else
  If Auth() Then
   ShowContent = TRUE
  Else
   Response.Redirect("login.asp")
  End If
End If
End Function

Function IsNewUser()
uid = Session.Contents("SID") ' read current session
if Len(uid)=0 then
  SID = Request.Cookies(cookieName)("SID") ' read cookie
  if Len(SID)=0 then
   IsNewUser = TRUE
  else
   IsNewUser = FALSE
  end if
else
  IsNewUser = FALSE
end if
End Function

Function Auth()
Dim p_id
Auth = FALSE
uid = Session.Contents("SID")
if Len(uid)>0 then
  DATA.connect()
  RS.Open "...", DB ' authorization SQL stored procedure
    If NOT RS.EOF Then
     ret = TRIM(RS("ret"))
     If ret>0 Then
     errmsg = TRIM(RS("errmsg"))
      DisplayError(12) 'Ошибка авторизации
    Else
      Auth = TRUE
    End If
   End If
    RS.Close
    DATA.disconnect()
end if

' Check by cookie if no check by session!
if not Auth then
  SID = Request.Cookies(cookieName)("SID")
  if SID<>"" Then
   Data.connect()
   rs.Open "...", DB ' Auth by SID SQL stored procedure
   if rs("ret")=0 then
    Session("SID") = rs("SID")
    Response.Cookies(cookieName).Expires = DateAdd("yyyy", 1, Now()) 'Сегодня + год
    Auth = true
   end if
   rs.close
   Data.disconnect()
  end if
end if
End Function


Чтобы все это добро использовать, на каждой странице сайта создаем инклуд
Код: Выделить всё
<!--#include virtual="/includes/auth.asp" -->


и начинаем с такого вот кода:

Код: Выделить всё
<%
if ShowContent() then
  %>
  <html>
  ... our page ...
  </html>
  <%
end if
%>


Вернуться в ASP и VBScript

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

    TopList