保存用户最新的登录Spring安全性

时间:2020-08-19 10:50:54

标签: java spring spring-security

如果问题无法正确构建,我很抱歉,我想存储上次用户的登录时间戳,不是每次用户更新页面或切换到另一个页面时都要保存,直到会话关闭。我该如何处理?

我有一个控制器,用于检查用户是否完全可以输入

 @GetMapping("/current")
    public ResponseEntity<UserDto> getCurrent() {
        Optional<UserDetails> currentFromSecurity = userSecurityService.getCurrentFromSecurity();
        if (!currentFromSecurity.isPresent()) {
            return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build();
        } else {
            UserEntity userEntity = currentUser.get();
            return ResponseEntity.ok(new UserDto(userEntity.getPdmUid(), userEntity.getRole().name(), userEntity.isOnlineSystem()));

        }
    }

我的配置

public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

private final ApifyAuthConfigurer authConfigurer;
private final PrincipalProvider principalProvider;

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
            .cors()
            .and()
            .csrf()
            .disable()
            .exceptionHandling()
            .authenticationEntryPoint(new ApifyAuthenticationEntryPoint())
            .and()
            .sessionManagement()
            .sessionCreationPolicy(SessionCreationPolicy.STATELESS);
    authConfigurer.configure(http, principalProvider);
}

我的主要职能

public class PrincipalProvider implements UserPrincipalProvider<UserDetails> {

private final UserService userService;

@Override
public Optional<UserDetails> getPrincipal(Claims claims) {
    log.debug("#getPrincipal - {}", claims);
    userService.createIfNotExist(claims);

    return Optional.of(new UserEntity().setPdmUid((Integer) claims.get("pdmUid")));
}

}

0 个答案:

没有答案
相关问题