Авторизация в 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’).
