2010-04-04 3 views
0

У меня есть базовая настройка Spring Security 3, использующая мою собственную страницу входа. Моя конфигурация ниже. У меня есть страница входа и регистрации, доступная для всех, а также большинство других. Я новичок в Spring Security и понимаю, что если пользователь пытается получить доступ к защищенному ресурсу, они будут переведены на определенную страницу входа в систему. И после успешного входа в систему они попадают на другую страницу, дома в моем случае. Я хочу сохранить последнее поведение; однако я хотел бы указать, что если пользователь пытается получить доступ к определенным ресурсам, они будут отправлены на страницу регистрации, а не на страницу входа в систему. В настоящее время в моих аннотированных контроллерах я проверяю контекст безопасности, чтобы узнать, вошел ли пользователь в систему, и если я не перенаправляю их на страницу регистрации. Я делаю это только с двумя URL-адресами и ни с кем другим. Это казалось излишним, поэтому я попытался создать HandlerInterceptor для перенаправления для этих запросов, но понял, что с аннотациями вы не можете указывать конкретные запросы, которые нужно обрабатывать - все они. Поэтому мне интересно, есть ли способ реализовать этот тип специфической обработки URL-адресов в Spring Security, или же маршрут HandlerInterceptor мой единственный вариант? Благодаря!Spring HandlerInterceptor или Spring Security для защиты ресурса

<http auto-config="true" use-expressions="true"> 
    <intercept-url pattern="/login*" access="permitAll"/> 
    <intercept-url pattern="/signup*" access="permitAll"/> 
    <intercept-url pattern="/static/**" filters="none" /> 
    <intercept-url pattern="/" access="permitAll"/> 
    <form-login login-page="/login" default-target-url="/home"/> 

    <logout logout-success-url="/home"/> 

    <anonymous/>   
    <remember-me/>    
</http> 
+0

Почему бы не сделать то, что делают большинство сайтов, и иметь две формы на одной странице, один для входа в систему, если у вас уже есть учетная запись, а другая - для регистрации новой учетной записи? – Gandalf

+0

@ Gandalf Спасибо за ответ. Фактически на странице регистрации есть ссылка на страницу входа и текст, направляющий пользователя там, если они уже зарегистрированы. Ваша идея сочетания двух не плохая, но мы хотели бы придерживаться того, что у нас есть сейчас. – richever

ответ

0

Проверить эту ссылку Adding Custom Filters - я думаю, вам нужно будет продлить UsernamePasswordAuthenticationFilter с собственной версией, которая делает логик вы описанные выше, а затем с помощью автонастройки и <form-login> элемента.

Смежные вопросы