2010-04-04 433 views
0

我已经使用自己的登录页面设置了基本的Spring Security 3。我的配置如下。我有登录和注册页面以及其他所有内容。我是Spring Security的新手,了解如果用户试图访问受保护的资源,他们将被带到定义的登录页面。成功登录后,他们会被带到其他页面,在我的情况下是家。我想保留后者的行为;不过,我想指定如果用户尝试访问某些资源,他们将被带到注册页面,而不是登录页面。目前,在我注释的控制器中,我检查安全上下文以查看用户是否已登录,如果没有,我将它们重定向到注册页面。我目前只在两个网站上做这个,而没有其他网站。这似乎是多余的,所以我尝试创建一个HandlerInterceptor来重定向这些请求,但意识到使用注释时,您无法指定要处理的特定请求 - 它们都是。所以我想知道是否有某种方式在Spring Security中实现这种类型的特定url处理,或者将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 2010-04-05 18:39:35

+0

@甘道夫感谢您的回应。实际上,注册页面有一个指向登录页面和文本的链接,如果用户已经注册,那么该页面会指向用户。你们将两者结合起来的想法并不错,但我们想坚持我们现在所拥有的。 – richever 2010-04-05 19:50:49

回答

0

看看这个链接Adding Custom Filters - 我的猜测是,你需要将UsernamePasswordAuthenticationFilter用自己的版本,那么你在上面所概述的,而不是使用自动配置和<form-login>元素的逻辑延伸。

相关问题