Главная > IT, perl > Авторизация в MVC Catalyst

Авторизация в MVC Catalyst

Прикрутить авторизацию в приложении написанном с помощью MVC Catalyst оказалось довольно таки просто. Для этого нам нужны следующие модули -

  • Authentication
  • Session
  • Session::Store::FastMmap
  • Session::State::Cookie

Их же мы должны включить в главном модуле приложения (допустим, что приложение называется Test, тогда этот модуль будет называться Test.pm):

use Catalyst qw/   
      Static::Simple
      Authentication
      Session
      Session::Store::FastMmap
      Session::State::Cookie
/;

 

Далее, в конфигурации модуля указываем параметры сессии:

Test->config(

‘Plugin::Session’ => {expires => 3600, storage => ‘/tmp/session’},

‘authentication’ => {
      ‘default_realm’ => ‘default’,
      ‘use_session’ => 1,
      ‘realms’ => {
          ‘default’ => {
              ‘credential’ => {
                  ‘class’ => ‘Password’,
                  ‘password_field’ => ‘user_password’,    # поле в таблице, пароль
                  ‘password_type’ => ‘clear’,
              },
              ‘store’ => {
                  ‘class’ => ‘DBI’,    # я решил использовать DBI, т.к. таблица с пользователями хранится в MySQL
                  ‘user_table’ => ‘users’,    # таблица пользователей
                  ‘user_key’ => ‘id_user’,    # ключ, id пользователя
                  ‘user_name’ => ‘user_login’,    # логин
              },
          },
      },
},
 

);

После столь не сложных манипуляций, можем использовать авторизацию =)

Создаем контроллер Login (для примера), после чего в функцию index пишем следующее:

sub index :Path {
my ($self, $c) = @_;
my $req = $c->request();

if ($req->param(‘login’) ne » && $req->param(‘key’) ne ») {
  unless ($c->authenticate({‘user_login’ => $req->param(‘login’),’user_password’ => md5_hex($req->param(‘key’)),}))
  {
   $c->stash->{error} = ‘Неверный логин/пароль’;
   $c->stash->{template} = "service/auth.tt";    # я использую TemplateToolkit (TT) как шаблонизатор (View/TT.pm)
 }
 else
 {
   $c->stash->{error} = "";
   $c->response->redirect(‘/’);
 }
} else {
   $c->stash->{template} = "service/auth.tt";   # я использую TemplateToolkit (TT) как шаблонизатор (View/TT.pm)
}
}
     

Всё, теперь можете проверять залогинен ли пользователь с помощью $c->user_exists и обращаться ко всем свойствам/параметрам/полям пользователя через $c->user->get(‘parameter_name’).

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

1 звезда2 звезд3 звезд4 звезд5 звезд (Еще не оценили)
Loading ... Loading ...

Categories: IT, perl Tags: Catalyst, Hint, IT, perl, Tutorial, ооп
  1. Пока что нет комментариев.
  1. Пока что нет уведомлений.
Необходимо войти на сайт, чтобы написать комментарий.