带有spring security的特定页面的url

Posted

技术标签:

【中文标题】带有spring security的特定页面的url【英文标题】:url to specific page with spring security 【发布时间】:2021-06-27 15:04:29 【问题描述】:

我有一个 Spring Boot 应用程序。

我需要发送包含指向系统特定页面的直接 url 的电子邮件,例如:

请点击以下链接接受报价:http://example.com/somepage?id=5

所需的行为如下:

    用户点击电子邮件中包含的链接。 出现登录页面。 用户登录并打开链接的特定页面。

但这不起作用。当用户点击 URL 时,他直接进入主页,而不是链接中包含的特定页面。

我在控制器中有这个方法:

@GetMapping("/home")
public String menu(Model model)    
    
    return "home";

这是 Spring Security 配置类:

...
.formLogin()
            .loginPage("/login")
            .permitAll()
            .defaultSuccessUrl("/home", true)
        ...

有谁知道我应该怎么做才能使其正常工作?

谢谢一百万。

问候,

【问题讨论】:

【参考方案1】:

请尝试将.defaultSuccessUrl("/home", true)改为.defaultSuccessUrl("/home", false)

【讨论】:

是的!很简单!你能解释一下这个真/假是什么意思吗?非常感谢!! 很高兴工作!请参阅docs.spring.io/spring-security/site/docs/current/api/org/…。最后一个参数是alwaysUse,文档说“如果用户在认证之前没有访问过安全页面,则指定用户在认证成功后将被重定向到哪里,或者alwaysUse为真。如果是true,用户总是被发送到url 定义为defaultSuccessUrl. 感谢一百万!很棒的解释!

以上是关于带有spring security的特定页面的url的主要内容,如果未能解决你的问题,请参考以下文章

认证后转到特定的jsp页面(spring security)

Spring security:如果用户不满足特定条件,则使每个页面重定向

带有 JWT 的 Spring Security OAuth2 重定向到登录页面

Spring security自定义登录页面不重定向

如何使初始登陆页面不是spring security的登录表单?

使用带有 Spring Security 的 Vaadin 出现 403 CSRF 令牌错误