小编Gab*_*lus的帖子

如何保存使用OAuth 2(春季)登录的用户?

我的主要目的是在每个用户使用google登录后存储每个用户的client-id。到目前为止,这个github仓库包含了我需要的大部分内容。需要关注的两个主要文件是OAuthSecurityConfig.javaUserRestController.java

当我导航到时/user,主体将包含我需要的有关用户的所有详细信息。因此,我可以使用以下代码片段获取所需的数据:

Authentication a = SecurityContextHolder.getContext().getAuthentication();
String clientId = ((OAuth2Authentication) a).getOAuth2Request().getClientId();
Run Code Online (Sandbox Code Playgroud)

然后,我可以将clientId存储在仓库中

User user = new User(clientId);
userRepository.save(user);
Run Code Online (Sandbox Code Playgroud)

问题在于用户不必导航到/user。因此,/score/user1无需注册即可导航到 。

该API打算将来用作android应用程序的后端,因此将jQuery重定向到/user是不安全的并且不起作用。


我尝试过的事情:

尝试1

我创建了以下类:

@Service
public class CustomUserDetailsService implements UserDetailsService {

private final UserRepository userRepository;

@Autowired
public CustomUserDetailsService(UserRepository userRepository) {
    this.userRepository = userRepository;
}

@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
    User user = userRepository.findByUsername(username);
    if (user == null) {
        throw new UsernameNotFoundException(String.format("User %s does …
Run Code Online (Sandbox Code Playgroud)

java spring oauth spring-mvc spring-security

5
推荐指数
2
解决办法
1727
查看次数

标签 统计

java ×1

oauth ×1

spring ×1

spring-mvc ×1

spring-security ×1