Spring security Spring HandlerInterceptor或保护资源的Spring安全性

Spring security Spring HandlerInterceptor或保护资源的Spring安全性,spring-security,Spring Security,我已经使用自己的登录页面设置了一个基本的SpringSecurity3。我的配置如下。我有登录和注册页面可访问的所有以及大多数其他一切。我是Spring Security的新手,了解到如果用户试图访问受保护的资源,他们将被带到定义的登录页面。成功登录后,他们会被带到另一个页面,在我的情况下是主页。我想保持后一种行为;但是,我想指定,如果用户试图访问某些资源,他们将被带到注册页面,而不是登录页面。目前,在我的带注释的控制器中,我检查安全上下文以查看用户是否登录,如果没有,我将他们重定向到注册页面。

我已经使用自己的登录页面设置了一个基本的SpringSecurity3。我的配置如下。我有登录和注册页面可访问的所有以及大多数其他一切。我是Spring Security的新手,了解到如果用户试图访问受保护的资源,他们将被带到定义的登录页面。成功登录后,他们会被带到另一个页面,在我的情况下是主页。我想保持后一种行为;但是,我想指定,如果用户试图访问某些资源,他们将被带到注册页面,而不是登录页面。目前,在我的带注释的控制器中,我检查安全上下文以查看用户是否登录,如果没有,我将他们重定向到注册页面。我目前只使用两个URL,没有其他URL。这似乎是多余的,所以我尝试创建一个HandlerInterceptor来重定向这些请求,但意识到使用注释,您无法指定要处理的特定请求——它们都是。所以我想知道是否有某种方法可以在SpringSecurity中实现这种特定的url处理,或者HandlerInterceptor路由是我唯一的选择吗?谢谢

<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>

查看此链接-我猜您将需要使用您自己的版本扩展UsernamePasswordAuthenticationFilter,该版本执行上述逻辑,而不是使用autoconfig和元素

为什么不像大多数网站那样,在一个页面上有两个表单,一个用于登录,另一个用于注册新帐户?@Gandalf感谢您的回复。实际上,注册页面上有一个指向登录页面的链接,如果用户已经注册,则该链接和文本将引导用户进入登录页面。你把两者结合起来的想法还不错,但我们现在想坚持现有的。