只访问属于jwt-token-spring-boot中定义了userid的用户的行

ryevplcw  于 2021-07-23  发布在  Java
关注(0)|答案(1)|浏览(242)

我以这种方式生成jwt令牌。

public String generateToken(String email,long id) {
    Map<String, Object> claims = new HashMap<>();
    claims.put("userId",id);
    return doGenerateToken(claims, email);
}

private String doGenerateToken(Map<String, Object> claims, String subject) {

    return Jwts.builder().setClaims(claims).setSubject(subject).setIssuedAt(new Date(System.currentTimeMillis()))
            .setExpiration(new Date(System.currentTimeMillis() + Long.parseLong(tokenValidity))).signWith(SignatureAlgorithm.HS512, secret).compact();
}

我现在面临的问题是,任何带有有效jwt令牌的请求都可以访问整个数据。目标是只获取由同一用户创建的数据。

@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {

    httpSecurity.cors().and().csrf().disable().headers().and()
            .authorizeRequests()
            .antMatchers("/api/users/register","/api/users/login","/api/users/token-validate").permitAll()
            .antMatchers("/").hasAnyAuthority("ADMIN")
            .antMatchers("**/save").hasAnyAuthority("ADMIN")
            .antMatchers("**/edit").hasAnyAuthority("ADMIN")
            .antMatchers("**/delete").hasAnyAuthority("ADMIN")
            .anyRequest().authenticated()
            .and()
            .exceptionHandling().authenticationEntryPoint(jwtAuthenticationEntryPoint).and()
            .sessionManagement()
            .sessionCreationPolicy(SessionCreationPolicy.STATELESS);

只能检索属于用户的消息。对不起,英语不好。

@GetMapping("/get-messages")
public ResponseEntity<GetMessageResponse> getAllMessages(@RequestParam(name = "user-id") long id){
    List<Message> messageList = messageService.findMessagesByUserId(id);
    return ResponseEntity.ok().body(new GetMessageResponse(MessageList,"Messages Retrieved Successfully", HttpStatus.OK));
}
cxfofazt

cxfofazt1#

使用spring,您可以使用以下代码获得经过身份验证的用户:

Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
Object         principal      = authentication.getPrincipal();

这比从请求参数获取用户标识更安全。

相关问题