首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何获取当前登录Spring的id

在Spring框架中,可以通过SecurityContextHolder来获取当前登录用户的信息,包括用户的id。具体步骤如下:

  1. 导入相关依赖:在项目的pom.xml文件中添加Spring Security的依赖。
代码语言:txt
复制
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
  1. 创建一个自定义的UserDetailsService实现类:该类用于从数据库或其他数据源中获取用户信息。
代码语言:txt
复制
@Service
public class UserDetailsServiceImpl implements UserDetailsService {

    @Autowired
    private UserRepository userRepository;

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        User user = userRepository.findByUsername(username);
        if (user == null) {
            throw new UsernameNotFoundException("User not found");
        }
        return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(), new ArrayList<>());
    }
}
  1. 创建一个自定义的User实体类:该类用于表示用户信息。
代码语言:txt
复制
@Entity
@Table(name = "users")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String username;

    private String password;

    // 省略其他属性和方法
}
  1. 创建一个Controller类:该类用于处理获取当前登录用户id的请求。
代码语言:txt
复制
@RestController
public class UserController {

    @GetMapping("/currentUserId")
    public Long getCurrentUserId() {
        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
        if (authentication.getPrincipal() instanceof UserDetails) {
            UserDetails userDetails = (UserDetails) authentication.getPrincipal();
            // 获取当前登录用户的id
            return userRepository.findByUsername(userDetails.getUsername()).getId();
        }
        return null;
    }
}

在上述代码中,通过SecurityContextHolder.getContext().getAuthentication()方法获取当前登录用户的认证信息,然后通过认证信息获取用户的用户名,再根据用户名从数据库中查询用户信息,最后返回用户的id。

这样,当客户端发送GET请求到"/currentUserId"路径时,将会返回当前登录用户的id。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云数据库(TencentDB)。

腾讯云云服务器(CVM):提供可扩展的云服务器实例,支持多种操作系统和应用场景,适用于各种规模的业务需求。产品介绍链接地址:https://cloud.tencent.com/product/cvm

腾讯云数据库(TencentDB):提供高性能、可扩展的数据库服务,包括关系型数据库(MySQL、SQL Server等)和非关系型数据库(MongoDB、Redis等),满足不同业务场景的需求。产品介绍链接地址:https://cloud.tencent.com/product/cdb

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

25分24秒

41_尚硅谷_书城项目_创建根据图书的id和根据购物车的id获取购物项的函数

23分36秒

076_尚硅谷_实时电商项目_获取当前日活数的Service方法实现

22分53秒

Java教程 Mybatis 15-插入数据后获取自增的id值 学习猿地

6分49秒

08-如何获取插件的帮助信息

5分23秒

Spring-011-获取容器中对象信息的api

1分40秒

如何获取苹果设备的UDID(iPhoneiPad UDID查询方法)

-

如何看待当前AI技术在智能交通市场中的应用现状丨华为安平业务部

19分47秒

10-spring如何执行内置的beanFactoryPostProcessor (一)

5分12秒

python开发视频课程5.12如何获取指定元素出现的次数

1分40秒

如何获取苹果设备的UDID(iPhone/iPad UDID查询方法)

8分40秒

Java分布式高并发电商项目实战 155 微服务之间的认证-获取当前认证用户 学习猿地

6分36秒

10_尚硅谷_大数据Spring_BeanFactory中提供的获取bean对象的方法.avi

领券