我使用自己的登录页面设置了基本的Spring Security 3。我的配置如下。我可以访问所有人以及其他所有内容的登录和注册页面。我是Spring Security的新手,并且了解如果用户试图访问受保护的资源,他们将被带到定义的登录页面。成功登录后,他们将被带到其他页面,在我的情况下回家。我想保持后者的行为;但是,我想指出,如果用户试图访问某些资源,他们将被带到注册页面,而不是登录页面。目前,在我的带注释的控制器中,我检查安全上下文以查看用户是否已登录,如果不是,我将它们重定向到注册页面。我目前只用两个网址而不是其他网址。这似乎是多余的,所以我尝试创建一个HandlerInterceptor来重定向这些请求但是意识到通过注释,你不能指定要处理的特定请求 - 它们都是。所以我想知道是否有一些方法在Spring Security中实现这种类型的特定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>
答案 0 :(得分:0)
查看此链接Adding Custom Filters - 我的猜测是您需要使用您自己的版本扩展UsernamePasswordAuthenticationFilter
,该版本执行您上面概述的逻辑,而不是使用autoconfig和{{ 1}}元素。