Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在运行时获取Spring UserDetails对象_Spring_Hibernate_Spring Boot_Spring Security - Fatal编程技术网

在运行时获取Spring UserDetails对象

在运行时获取Spring UserDetails对象,spring,hibernate,spring-boot,spring-security,Spring,Hibernate,Spring Boot,Spring Security,我有一个Spring应用程序,用户必须通过3个字段(用户名、部门ID和密码)登录。我想在运行时检索当前登录用户的部门ID 我试过: SecurityContextHolder.getContext().getAuthentication() 然后尝试将其强制转换为UserDetails对象,但出现一个错误,表示无法强制转换该对象 我还尝试扩展UserDetails接口并添加需要返回的数据,然后实现了新接口,但我也无法强制转换对象。如果使用JWT,则在令牌构建期间添加声明 字符串jwt=Jwts

我有一个Spring应用程序,用户必须通过3个字段(用户名、部门ID和密码)登录。我想在运行时检索当前登录用户的部门ID

我试过:

SecurityContextHolder.getContext().getAuthentication()
然后尝试将其强制转换为UserDetails对象,但出现一个错误,表示无法强制转换该对象


我还尝试扩展UserDetails接口并添加需要返回的数据,然后实现了新接口,但我也无法强制转换对象。

如果使用JWT,则在令牌构建期间添加声明 字符串jwt=Jwts.builder() .setSubject(用户名) .索赔(“deptId”,部门ID)


然后从claims.getBody()中获取值。

身份验证方法将返回一个
身份验证
对象,您需要对该对象进行适当转换以获取用户详细信息。您缺少getPrincipal();对象主体=SecurityContextHolder.getContext().getAuthentication().getPrincipal();如果(principal instanceof UserDetails){String用户名=((UserDetails)principal).getUsername();}或者{String用户名=principal.toString();}您可能还想添加您试图获取其详细信息的身份验证对象的详细信息。这有什么帮助?