当前位置: 首页 > 知识库问答 >
问题:

如何从header响应中获取JWT?

艾照
2023-03-14
onLoggedin()
  {
    this.authService.login(this.user).subscribe((data)=> {
      let jwToken = data.headers.get('Authorization');
      this.authService.saveToken(jwToken);
      this.router.navigate(['/']);
    },(err)=>{   this.err = 1;
});
login(user : User)
  {
    return this.http.post<User>(this.apiURL+'/login', user , {observe:'response'});
  }
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    UserDetailsService userDetailsService;

    @Autowired
    BCryptPasswordEncoder bCryptPasswordEncoder;

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder);
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.cors().configurationSource(corsConfigurationSource());
        http.csrf().disable();

        http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
        http.authorizeRequests().antMatchers("/login").permitAll();
        http.authorizeRequests().antMatchers("/all").hasAuthority("ADMIN");

        http.authorizeRequests().anyRequest().authenticated();
        http.addFilter(new JWTAuthenticationFilter(authenticationManager()));
        http.addFilterBefore(new JWTAuthorizationFilter(), UsernamePasswordAuthenticationFilter.class);
    }

    CorsConfigurationSource corsConfigurationSource() {
        CorsConfiguration configuration = new CorsConfiguration();
        configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE"));

        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration.applyPermitDefaultValues());
        return source;
    }
}

共有1个答案

柴耀
2023-03-14

尝试使用这个库,它将获取令牌并对其进行解码:

import jwt_decode from 'jwt-decode';

然后创建一个函数,返回以下内容:

return jwt_decode(localStorage.getItem('token'))

只获取令牌:

private getToken() {
    return `${localStorage.getItem('token')}`;
  }
 类似资料:
  • 问题内容: 我在同一个域上有一个请求,我想读取cookie。它不断返回。 有任何想法吗?我为此使用Chrome。 问题答案: 您正在寻找的响应标头: 它不适用于HTTPOnly cookie。 更新资料 根据XMLHttpRequest级别1和XMLHttpRequest级别2,此特定的响应标头属于您可以使用所获得的“禁止”响应标头,因此,该方法可以起作用的唯一原因基本上是一个“顽皮的”浏览器。

  • 问题内容: 我正在尝试从Web读取JSON数据,但是该代码返回空结果。我不确定我在做什么错。 问题答案: 理想的方法 不是 使用,而是直接在阅读器上使用解码器。这是一个不错的函数,它获取url并将其响应解码到结构上。 使用示例: 您不应该在生产中使用默认结构,如最初回答的那样!(/ etc调用的是哪个)。原因是默认客户端没有设置超时。如果远程服务器无响应,那将是糟糕的一天。

  • 我目前正在尝试将我的phpmyadmin服务器连接到android studio。如果重要的话,我正在使用模拟器。我制作了一些php文件来接收数据并更改数据库中的数据。 checkuserexist.php 在我的Android Studio程序中: InputStream=conn.getInputStream();返回一个exeption:failed to connect to/10.0.2

  • 我正在尝试从json的响应中获取正文并打印这个json或能够将他放入数组。我在堆栈上找到了这篇文章:如何从http.Get获得JSON响应。有代码: 但是我不明白为什么会有“Decode(target)”和“target interface{}”。它是做什么的?为什么当我试着打印json时?NewDecoder(r.Body)没有什么有意义的。

  • 我一直在努力学习关于如何使用的最简单的教程,我认为这是与相比的下一个最棒的教程。 例如,https://www.baeldung.com/spring-5-webclient#4-geting-a-response 因此,当我尝试对https://petstore.swagger.io/v2/pet/findbystatus?status=available执行同样的操作时,

  • 我使用的是改装版2.0b2。收到响应后,我尝试通过以下方式从响应中获取InputStream: 但是这个应用程序一直在扔: 尽管回复正确。我到底做错了什么?