【问题标题】:Spring HandlerInterceptor or Spring Security to protect resourceSpring HandlerInterceptor 或 Spring Security 来保护资源
【发布时间】: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


【解决方案1】:

查看此链接Adding Custom Filters - 我猜您将需要使用您自己的版本扩展UsernamePasswordAuthenticationFilter,该版本执行您上面概述的逻辑,而不是使用自动配置和&lt;form-login&gt; 元素。

【讨论】:

    猜你喜欢
    • 2012-12-26
    • 1970-01-01
    • 2017-08-18
    • 2016-01-12
    • 2017-08-01
    • 2014-03-07
    • 2016-02-11
    • 2020-11-30
    • 2022-12-11
    相关资源
    最近更新 更多