如何解决保存用户最新的登录Spring安全性
如果问题无法正确构建,我很抱歉,我想存储上次用户的登录时间戳,不是每次用户更新页面或切换到另一个页面时都要保存,直到会话关闭。我该如何处理?
我有一个控制器,用于检查用户是否完全可以输入
@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")));
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。