Spring security spring security中的自定义UserDetails服务

Spring security spring security中的自定义UserDetails服务,spring-security,spring-security-oauth2,Spring Security,Spring Security Oauth2,由于一个奇怪的错误,我无法继续我的项目。我正在尝试为我的应用程序实现spring安全性和spring数据JPA,它只公开RESTAPI。 现在,当我尝试实现我的自定义UserDetailsService类时,如下所述,方法loadUserByUsername中的参数username不是我作为POST请求参数传递的用户名,而是客户机id参数。 有人能告诉我我做错了什么吗 公共类CustomUserDetailsService实现UserDetailsService{ 私有客户端详细信息服务客户端详

由于一个奇怪的错误,我无法继续我的项目。我正在尝试为我的应用程序实现spring安全性和spring数据JPA,它只公开RESTAPI。 现在,当我尝试实现我的自定义UserDetailsService类时,如下所述,方法loadUserByUsername中的参数username不是我作为POST请求参数传递的用户名,而是客户机id参数。 有人能告诉我我做错了什么吗

公共类CustomUserDetailsService实现UserDetailsService{ 私有客户端详细信息服务客户端详细信息服务; 私有字符串emptyPassword=; 公共CustomUserDetails服务{ } 公共客户用户详细信息服务客户端详细信息服务客户端详细信息服务{ this.clientDetailsService=clientDetailsService; } 私有列表getAuthoritiesString角色{ List authList=新建ArrayList; authList.addnew SimpleGrantedAuthorityROLE_用户; //您还可以在此处添加不同的角色 //例如,用户也是站点的管理员,然后您可以添加 //角色管理 //这样他就可以查看特定于角色的页面 如果角色!=null&&role.trim.length>0{ if role.equalsadmin{ authList.addnew SimpleGrantedAuthorityROLE_ADMIN; } } 返回authList; } @凌驾 public UserDetails loadUserByUsernameString用户名 抛出UsernameNotFoundException{ ClientDetails ClientDetails=ClientDetails服务 .LoadClientByClientDuserName; 字符串clientSecret=clientDetails.getClientSecret; 如果clientSecret==null | | clientSecret.trim.length==0{ clientSecret=emptyPassword; } 返回新的Userusername、clientSecret、clientDetails.GetAuthories; } } 我的spring安全配置如下所示:


您在哪里发布用户名以及如何向我们显示客户端?@DaveSyer:我从google POSTMAN传递用户名,就好像/Project是您的服务器上下文路径一样,然后该请求将命中/token端点。我假设您使用的是POST,并且您已使用您的客户端详细信息身份验证管理器正确地保护了它。那么这有什么问题?@DaveSyer:我读到了userdetails服务实现,如果userName被传递给loadUserByUserName方法,我们可以从DB或其他任何地方加载用户详细信息。。,我的问题是,在我的例子中,clientId被传递到这个方法,而不是从POST请求传递的用户名。但是您正在验证一个客户端,因此用户名必须是客户端id。您还构建了UserDetailsService来使用ClientDetailsService,所以看起来像是您期望的那样。