【问题标题】:How to send token to other paths?如何将令牌发送到其他路径?
【发布时间】:2020-07-11 15:16:12
【问题描述】:
@PostMapping("login")
public String postLogin(@RequestParam Map<String, String> body) {
    log.info(body);

    Optional<String> token = authService.login(body.get("email"), 
                                             body.get("password"), 
                                             body.get("rememberMe"));
    if (token.equals(Optional.empty())) {
            return "redirect:/login-error";
    }else {
        log.info("POST MAPPING SUCCESSFUL " + token.orElse(null) );
        response.add("Authorization",token.orElse(null));
        return "redirect:/main-page-authorized";} }

** 在这里我可以得到令牌,根据用户邮件。它生成令牌。但我不知道如何将令牌发送到浏览器并且每个请求都识别令牌。同时,我需要重定向到主页授权。我怎样才能做到这两点?**

【问题讨论】:

  • 你试过用“response.setHeader(token.orElse(null))”代替“response.add”吗?另外,您不应该也收到“HttpServletResponse response”作为此方法的参数吗?
  • 是的,你是对的,它已被删除,对不起。但是当我尝试 response,setHeader() 时,下一页也无法识别令牌。实际上,token 会显示为 null(
  • 是的,但是登录 else 语句会显示令牌生成。它是生成的
  • 我认为问题是没有显示标题,或者重定向后丢失
  • 从我读到的所有其他地方,“redirect://”,因为它发生在客户端,在此处设置时标头不会出现。

标签: java spring spring-boot spring-security jwt-auth


【解决方案1】:

“登录”不是控制器职责范围。必须在 Spring Security 配置中指定检查和重定向。例如:

protected void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests()
      .anyRequest().authenticated()
      .and().formLogin()
      .loginPage("/login").permitAll();
}

我强烈推荐学习这个。

【讨论】:

  • 是的,但是我看不到任何自定义登录页面的教程。毕竟,我的问题与它无关。我的问题是将令牌发送到其他页面
猜你喜欢
  • 2020-10-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-27
  • 2021-10-18
  • 2016-04-29
  • 2023-03-03
  • 2015-03-30
  • 2020-08-21
相关资源
最近更新 更多