Spring Security 3 программно войти - PullRequest
2 голосов
/ 16 октября 2010

Я создаю веб-сервис REST с использованием Spring, и мне нужно реализовать в нем функции входа / выхода. URL для функций должен быть что-то вроде ... / api / login и ... / api / logout. Имя пользователя и пароль будут перенесены с использованием метода POST.

У меня есть уровень служб ниже веб-службы REST. На уровне сервиса у меня есть код функций входа и выхода из системы. Я хочу использовать Spring Security, чтобы сохранить зарегистрированного пользователя в контексте Spring. Я нашел несколько ответов, но ничто не дает полного примера того, как это сделать. Мне также интересно, каков современный способ сделать эту пользовательскую аутентификацию с помощью Spring Security (без использования какой-либо формы входа, только программный вход / выход из системы).

Ответы [ 3 ]

3 голосов
/ 23 октября 2010

Лучший способ - добавить реализацию аутентификации в Spring Security. Вы можете сделать это, зарегистрировав своего собственного «провайдера аутентификации» в Spring Security.

Например:

<bean id="authenticationManager" class="org.springframework.security.providers.ProviderManager">
    <property name="providers">
        <list>
            <ref local="myAuthenticationProvider"/>
        </list>
    </property>
</bean>

<bean id="myAuthenticationProvider" class="org.my.web.restapi.authentication.MyAuthenticationProvider"/>

Еще одна вещь: я знаю, что это отнимает много времени, но после прочтения Ссылка Spring Security вы обязательно получите "большую картину": -)

0 голосов
/ 18 апреля 2012

Не уверен, что это то, что вам нужно.Программно вызовите http://localhost:8080/webappname/j_spring_security_check Передайте пароль имени пользователя в параметрах формы j_username и j_password.В файле security-app-context.xml замените элемент form-login на

<form-login login-page="/login" login-processing-url="/j_spring_security_check"
    authentication-success-handler-ref="myAuthenticationSuccessHandler" 
    authentication-failure-handler-ref="myAuthenticationFailureHandler"/>

<beans:bean id="myAuthenticationSuccessHandler" class="com.something.MyAuthenticationSuccessHandler" />
<beans:bean id="myAuthenticationFailureHandler" class="com.something.MyAuthenticationFailureHandler" />

Реализация Spring AuthenticationSuccessHandler и AuthenticationFailureHandler.Поведение по умолчанию - перенаправление на форму входа.

0 голосов
/ 19 марта 2012

Если вам нужен менеджер базовой аутентификации, следующий код получит его в вашем приложении без дополнительной конфигурации XML:

@SuppressWarnings({"SpringJavaAutowiringInspection"})
@Resource(name = "org.springframework.security.authenticationManager")
private AuthenticationManager authenticationManager;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...