【发布时间】:2010-04-04 21:18:23
【问题描述】:
我已经使用自己的登录页面设置了基本的 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>
【问题讨论】:
-
为什么不做大多数网站的做法,在一个页面上有两个表单,一个用于登录,如果您已有帐户,另一个用于注册新帐户?
-
@Gandalf 感谢您的回复。实际上,注册页面有一个指向登录页面的链接,如果用户已经注册,则会将其引导至该页面。您将两者结合起来的想法不错,但我们想坚持我们目前的想法。
标签: spring-security