我正在使用spring security进行身份验证。身份验证工作正常。但在身份验证后,它不会重定向到在spring安全配置文件中使用默认目标URL提到的html。我收到简单的消息成功。但不是已配置的html页面。我在下面添加了重定向行。
<form-login login-page="/login.jsp" default-target-url="/welcome.html"/>
我错过了配置的任何内容。
谢谢!
答案 0 :(得分:15)
如果在请求受保护资源后将用户发送到登录页面,则会在成功登录后将其发送到最初请求的页面。只有当用户首先登录而没有请求受保护资源(即他们直接导航到登录页面)时,才会使用default-target-url。如果您始终想要转到default-target-url,则可以指定always-use-default-target =“true”,如下例所示
<form-login login-page="/login.jsp"
default-target-url="/welcome.html"
always-use-default-target="true"/>
答案 1 :(得分:4)
我有类似的问题,上面的回答给了我一个提示,但由于我直接从Java类使用configs以下帮助我:
在 docs.spring.io中,您可以找到:
defaultSuccessUrl(String defaultSuccessUrl,boolean alwaysUse)
因此当改变时
.defaultSuccessUrl("/home")
到
.defaultSuccessUrl("/home", true)
问题解决了。
答案 2 :(得分:3)
这里有一个有趣的问题是浏览器是否请求需要经过身份验证的会话的资源 - 例如请求一个需要用户登录的javascript文件,这会产生403错误,如果你在spring或web.xml中配置了错误页面会将用户重定向到 - 但是用户永远不会看到这个。
然后,当用户登录时,Spring认为用户请求的最后一件事是错误页面,因此用户将被定向到错误页面而不是弹簧中配置的默认页面
答案 3 :(得分:0)
我知道这是一个相当古老的问题,但现在也有一些用户会遇到这个问题。
welcome.html
页面(相对于上下文路径)。您可以在登录后删除intercept-url
或直接访问它。always-use-default-target="true"
invalid-session-url
。