2015-12-04 9 views
0

Как делиться информацией о том, что пользователь не подключен (и перенаправляет его на страницу входа)?alfresco share проверить подлинность

Даже если пользователь подключен, я хотел бы проверить, есть ли у него разрешение и перенаправить его на страницу входа, если нет. Поэтому я хотел бы знать, как Share управляет аутентифицированным пользователем с сеанса.

Могу ли я использовать фильтр или прослушиватель или сервлет или любой другой меканизм для перехвата всего URL-адреса на общий ресурс и проверить, требуется ли подключенному пользователю разрешение.

Я пользуюсь alfresco 5.0.d.

Заранее благодарю вас за помощь.

ответ

2

В зависимости от метода аутентификации используется и какие услуги в Доля доступны (страницы, прокси сервлет или веб-скриптов), есть несколько мест, где производятся проверки в отношении текущего пользователя:

  • класс SSOAuthenticationFilter - сервлет-фильтр, обрабатывающий то, что он говорит от своего имени, Single Sign-On (SSO), например Kerberos, NTLM или CAS/внешняя аутентификация
  • класс PageView - часть структуры Surf, которая проверяет, имеет ли текущий пользователь требуемые привилегии для текущей страницы (ограниченное разграничение гостя, пользователя, администратора, как определено в определении XML-страницы страницы)
  • класс SlingshotPageView - усиление/специализация просмотра страницы класса
  • класса EndpointProxyServlet - обработка аутентификации для любого бэкенда REST API вызовов через прокси-сервера с помощью Share
  • классы PresentationContainer и экземпляры интерфейса Authenticator - обработки прямых вызовов на любой вебе-скрипты за пределы нормальных циклов передачи страниц

Технически вы можете использовать фильтр, чтобы перехватывать все вызовы сервлетов на Share, но я не идеален с точки зрения обслуживания (web.xml не легко расширяется и переопределяется при обновлении). Если все, что вас интересует, это запросы на выполнение страницы, вы можете использовать Surf extension modules для ввода кода последующей обработки, который может генерировать ответы перенаправления, если пользовательские разрешения отсутствуют. Через объект «status» с корневым областью вы можете отправлять ответы перенаправления HTTP и определять целевое местоположение.

+0

Спасибо Алекс. Я бы хотел реализовать свою логику, переопределив SSOAuthenticationFilter (я вижу, что все HTTP-вызовы проходят через этот фильтр). Мне бы хотелось проверить, имеет ли пользователь определенное разрешение в начале метода doFilter и перенаправляет пользователя, если нет. Я вижу, что перенаправление выполнено (в firefox adress bar я вижу «localhost: 8080/share/page? Pt = login & error = true»), но страница входа в систему не может быть отображена. Я не могу понять почему. У вас есть идея проблемы? – soung

+0

Пользователь не будет идентифицирован в начале doFilter в SSO AuthenticationFilter при первом вызове, поэтому проверка разрешений всегда будет работать. Если вы хотите использовать фильтр, я бы посоветовал вам написать пользовательский вариант, поместить его после одного SSO и проверить, запрашивается ли страница, и пользователь уже прошел аутентификацию перед выполнением проверки разрешения. Таким образом, вы не будете прерывать обработку, которая может потребоваться для правильного отображения имени входа в систему. –

+0

Привет Мой вопрос - как написать такой фильтр? – soung