Авторизацию и аутентификация на Perl

Модератор: Модераторы разделов

Аватара пользователя
gcc
Сообщения: 526
ОС: FreeBSD 8.0 CURRENT

Авторизацию и аутентификация на Perl

Сообщение gcc »

нужна авторизаци, аутентификаци и сеcсии примерно как на этом форуме, только на perl + MySQL
1. Подскажите где про это можно найти, в гугле не нашел, может есть статья полная?
2. Какие модули смотреть?

если "склепать" самому , то не понимаю как сделать сколько человек есть и сколько было за некоторое время! есть чтобы полностью сделать?
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Авторизацию и аутентификация на Perl

Сообщение diesel »

gcc писал(а):
19.03.2008 01:06
нужна авторизаци, аутентификаци и сеcсии примерно как на этом форуме, только на perl + MySQL
1. Подскажите где про это можно найти, в гугле не нашел, может есть статья полная?
2. Какие модули смотреть?

если "склепать" самому , то не понимаю как сделать сколько человек есть и сколько было за некоторое время! есть чтобы полностью сделать?

CGI:Session - есть такой модуль, вроде для этого он, не пробовал - ибо прийдется возится с установкой модуля этого туда где мои скрипты работают.
Если делать самому, то выглядит это примерно так. Логинится человек на сайт, при логине выдается ему какой-то sessid, который можно записать в cookies(работа с cookies в самом CGI реализована), или просто передавать в GET/POST запросах каждый раз. На стороне сервера сохраняем соответствие sessid-user_id+expirity date для конкретной сессии. Каждый раз когда у тебя спрашивают страничку, смотрим если cookie нужный, если нет - отправляем на авторизацию, если есть - смотрим есть ли он в нашей таблице соответствий, если есть - отдаем соответствующую страничку, если нет - отправляем на авторизацию. + отдельно думаем над удалением "просроченных" сессий. где-то так.
Спасибо сказали:
Аватара пользователя
gcc
Сообщения: 526
ОС: FreeBSD 8.0 CURRENT

Re: Авторизацию и аутентификация на Perl

Сообщение gcc »

а если браузер закрылся, то как сделать чтобы сессия оборвалась?

UPD: вроде нашел этот модуль http://search.cpan.org/~markstos/CGI-Session-4.20/

попробую еще посмотреть форум ikonboard он на перле написан
Спасибо сказали:
Аватара пользователя
gcc
Сообщения: 526
ОС: FreeBSD 8.0 CURRENT

Re: Авторизацию и аутентификация на Perl

Сообщение gcc »

1. Прочитал вот сдесь, делаю по этому модулю с MySQL (может и не надо было - лучше самому написать эту сессию?)
http://search.cpan.org/~markstos/CGI-Session-4.20/

а как посмотреть привязана ли сессии к конкретному юзеру (и по его айпи, если Cookies кто-то украдет ) зарегистрированому в таблице?

Код: Выделить всё

 CREATE TABLE sessions (
     id CHAR(32) NOT NULL PRIMARY KEY,
     a_session TEXT NOT NULL
  );


Код: Выделить всё

CREATE TABLE users (
        id    INT(11)      NOT NULL AUTO_INCREMENT,
        name  VARCHAR(25) NOT NULL,
        pass  VARCHAR(25) NOT NULL,
        info  VARCHAR(500) NOT NULL,
PRIMARY KEY (id)


2. как Cookies послать браузера (если это будет на прмиер прокси-серсер) чтобы Cookies выключились когда браузер закроется (чтобы вечно не остались там)? не могу найти про это
я вот так print "Set-Cookie: session=$id; domain=.$host; path=/\n";

UPD: первое наверное вот так примерно

Код: Выделить всё

 'SELECT t1.user,
                                    t1.host,
                                    t1.ip,
                                    t1.forwarded,
                                    t2.name
                             FROM session AS t1,
                                 users AS t2
                             WHERE t1.session = \''.$cookies{'session'}.'\' AND
                                 t1.user = t2.id
                             LIMIT 1'
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Авторизацию и аутентификация на Perl

Сообщение diesel »

gcc писал(а):
21.03.2008 01:51
1. а как посмотреть привязана ли сессии к конкретному юзеру (и по его айпи, если Cookies кто-то украдет ) зарегистрированому в таблице?

ну чтобы привязать сессию к IP - нужно для начала этот IP сохранить где-нить. Не вижу его в твоих таблицах.

gcc писал(а):
21.03.2008 01:51
2. как Cookies послать браузера (если это будет на прмиер прокси-серсер) чтобы Cookies выключились когда браузер закроется (чтобы вечно не остались там)?


С perldoc CGI:

Код: Выделить всё

 1. an expiration time
           This is a time/date string (in a special GMT format) that indicates when a cookie expires.  The cookie will be
           saved and returned to your script until this expiration date is reached if the user exits the browser and restarts
           it.  If an expiration date isn’t specified, the cookie will remain active until the user quits the browser.
Спасибо сказали:
Аватара пользователя
gcc
Сообщения: 526
ОС: FreeBSD 8.0 CURRENT

Re: Авторизацию и аутентификация на Perl

Сообщение gcc »

спасибо, просто делаеться!

столкнулся с проблемой что не передаються куки, и я не знаю передались ли они вообще...

http://search.cpan.org/~lds/CGI.pm-3.34/CGI/Cookie.pm

Код: Выделить всё

use CGI::Cookie;
use warnings;
use Storable;
use vars '$dbh', '%user_vars';

$cookie1 = new CGI::Cookie(-session => '$session',
-name => 'SOMENAME',
-domain => '.someserver.com',
-expires => '+3M',
);

    print header(-cookie=>$cookie1);

 print "Content-type: text/html\n\n"


менял все - не получаеться

Код: Выделить всё

Undefined subroutine &main::header called at ....es.pl line 188.



когда хочу получить то не определено

Код: Выделить всё

my %cookies = fetch CGI::Cookie;
# Если есть ключ сессии
if ($cookies{'session'}) {




UPD: передал вот так:

Код: Выделить всё

print "Content-type: text/html\n\n";

print << "[INFO]";

  <META HTTP-EQUIV="Set-Cookie" CONTENT="session=$session;
         DOMAIN=.$host; PATH=/; SECURE">



[INFO]


CGI::Cookie не захотел передавать CGI.pm-3.33,1
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Авторизацию и аутентификация на Perl

Сообщение diesel »

Код: Выделить всё

Undefined subroutine &main::header called at ....es.pl line 188.


делай не только use CGI::Cookie ... header просто в CGI, т.е. use CGI.
Спасибо сказали:
Аватара пользователя
gcc
Сообщения: 526
ОС: FreeBSD 8.0 CURRENT

Re: Авторизацию и аутентификация на Perl

Сообщение gcc »

вот нашел
MVC (model view controller) http://search.cpan.org/~mramberg/Catalyst-...lib/Catalyst.pm
ORM (object-relational mapper) объектный реляционный картопостроитель http://search.cpan.org/~akimov/ORM-0.85/lib/ORM.pod
http://search.cpan.org/~ash/DBIx-Class-0.08010/
Спасибо сказали: