52
|
1 package IMPL::Web::Security;
|
|
2
|
73
|
3 use base qw(IMPL::Object IMPL::Security IMPL::Object::Autofill);
|
|
4
|
|
5 use IMPL::Class::Property;
|
|
6
|
|
7 __PACKAGE__->PassThroughArgs;
|
|
8
|
|
9 BEGIN {
|
79
|
10 public property source => prop_all;
|
73
|
11 }
|
|
12
|
|
13 sub CTOR {
|
|
14 my ($this) = @_;
|
|
15
|
|
16 $this->dataSource or die new IMPL::InvalidArgumentException("The argument is required",'dataSource');
|
|
17 }
|
|
18
|
79
|
19 sub RetrSession {
|
|
20 my ($this,$sid) = @_;
|
|
21
|
|
22 return $this->source->RetrSession(id => $sid);
|
73
|
23 }
|
|
24
|
79
|
25 sub RetrSecData {
|
|
26 my ($this,$user,$secPackage) = @_;
|
73
|
27
|
79
|
28 $user = ref $user ? $user->name : $user;
|
|
29
|
|
30 return
|
|
31 $this->source->RetrSecData(user => $user, package => $secPackage);
|
73
|
32 }
|
|
33
|
52
|
34 1;
|
|
35
|
|
36 __END__
|
|
37
|
|
38 =pod
|
|
39
|
73
|
40 =head1 NAME
|
|
41
|
|
42 C<IMPL::Web::Security> Модуль для аутентификации и авторизации веб запроса.
|
|
43
|
|
44 =head1 SINOPSYS
|
|
45
|
|
46 =begin code xml
|
|
47
|
|
48 <security type='IMPL::Config::Activator'>
|
|
49 <factory>IMPL::Web::Security</factory>
|
|
50 <parameters type='HASH'>
|
|
51 <sessionFactory type='IMPL::Object::Factory'>
|
|
52 <factory type='IMPL::Object::Factory'>App::Data::Session</factory>
|
|
53 <method>insert</method>
|
|
54 </sessionFactory>
|
|
55 </parameters>
|
|
56 </security>
|
|
57
|
|
58 =end code xml
|
|
59
|
52
|
60 =head1 DESCRIPTION
|
|
61
|
73
|
62 Отвечает за инфраструктуру аутентификации и авторизации запросов. Основная особенность
|
|
63 заключается в том, что запросы приходят через значительные интевалы времени, хотя и
|
|
64 относятся к одной логической транзакции. В промежутках между запросами сервер не
|
|
65 сохраняет свое состояние. Поэтому при каждом обращении сервер восстанавливает
|
|
66 контекст безопасности.
|
52
|
67
|
73
|
68 C<IMPL::Web::Session> Объект обеспечивающий сохранение состояния в рамках одной сессии
|
|
69 пользователя. Кроме контекста безопасности хранит дополнительние данные, которые необходимо
|
|
70 сохранить между обработкой запросов.
|
52
|
71
|
73
|
72 C<IMPL::Web::User> Объект, устанавливающий связь между идентификатором пользователя
|
|
73 C<IMPL::Security::Principal>, его ролями и данными безопасности для создания объектов
|
|
74 аутентификации C<IMPL::Security::Auth>.
|
52
|
75
|
73
|
76 =head1 MEMBERS
|
52
|
77
|
|
78 =cut |