JSF Spring Security информация о пользователе - PullRequest
0 голосов
/ 15 декабря 2011

Я новичок в Spring Security.Я использую jsf2 с Spring Security 3. Три вопроса:

  1. Как я могу получить доступ к информации о пользователе (имя, пароль, роли) пользователя из бина сеанса, управляемого в данный моментвошли в систему?

    Для того, чтобы использовать его в виде, например, для рендеринга элементов в зависимости от ролей пользователя.

  2. Как узнать, является ли пользовательзалогинен?Чтобы показать в представлении «ссылку для входа в систему», если пользователь не вошел в систему, или «ссылку для выхода из системы», если пользователь вошел в систему. Какое свойство Spring Security я должен использовать в своем управляемом компоненте для хранения этогоинформация и использовать ее в представлении?

  3. «Ссылка для входа» - это просто запрос GET к URL-адресу страницы входа.Но как я могу показать "ссылку выхода из системы"?Должен ли это быть запрос POST и использовать «h: commandLink», как это?:

    <h:commandLink value="Logout" action="#{request.contextPath}/j_spring_security_logout" />
    

    Или это может быть запрос GET?:

    <h:link value="Logout" outcome="#{request.contextPath}/j_spring_security_logout" />
    

Большое спасибо в продвинутом.

1 Ответ

1 голос
/ 25 апреля 2012
  1. Объект аутентификации, который сохраняет эти свойства, вы можете получить с помощью следующей строки в вашем managedBean:

    Authentication auth = SecurityContextHolder.getContext().getAuthentication();

  2. AПользователь регистрируется, если его Аутентификация не является установкой AnonymousAuthenticationToken, в вашем spring-security-context.xml вы должны определить URL, перехваченные Spring.

    Первый перехватчик не анализируется SpringВ этом случае объект аутентификации является экземпляром AnonymousAuthenticationToken.

    . Второй перехватчик анализируется Spring, и пользователь перенаправляется на страницу входа, объявленную в spring-security-context.xml

    /* This is a example for to obtain the rol name for example for generate automatic menu */
    Authentication auth = SecurityContextHolder.getContext().getAuthentication();
    String namePrincipalRol = null;
    if (auth instanceof AnonymousAuthenticationToken) {
        namePrincipalRol = "ROLE_ANONYMOUS";
    } else {
        namePrincipalRol = auth.getAuthorities().iterator().next().getAuthority();
    }
    
  3. Хороший вопрос, Я не уверен , но я помню, что прочитал, что это должен быть POST, было бы интересно попробовать.Я использую ч: outputLink

С уважением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...