當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring Security OAuth2——自定义OAuth2第三方登录(Gitee)并与UsernamePassword登录关联解决方案
生活随笔
收集整理的這篇文章主要介紹了
Spring Security OAuth2——自定义OAuth2第三方登录(Gitee)并与UsernamePassword登录关联解决方案
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前文:Spring Security OAuth2——自定義OAuth2第三方登錄(Gitee)?
Maven
主要
<!--Spring Security--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency><!--Spring Security OAuth2--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-oauth2-client</artifactId></dependency>解決方案
實體類
org.springframework.security.core.userdetails.UserDetailsService
/*** 服務實現類** @author ShenTuZhiGang* @version 1.0.0* @date 2021-02-15 15:05*/ @Service public class UserServiceImpl implements UserDetailsService {private final UserMapper userMapper;private final UserRoleMapper userRoleMapper;public UserServiceImpl(UserMapper userMapper, UserRoleMapper userRoleMapperr) {this.userMapper = userMapper;this.userRoleMapper = userRoleMapper;}/*** 加載指定用戶* @param username 用戶名* @return Spring Security UserDetails* @throws UsernameNotFoundException 用戶不存在*/@Overridepublic UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {User user = userMapper.selectUserByUserName(username);if(user == null){throw new UsernameNotFoundException("賬號不存在");}UsernamePasswordAuthenticationUser authenticationUser = new UsernamePasswordAuthenticationUser();BeanUtils.copyProperties(user,authenticationUser);authenticationUser.setRoles(userRoleMapper.listRoleByUid(user.getId()));return authenticationUser;} }org.springframework.security.oauth2.client.userinfo.OAuth2UserService
/*** @author ShenTuZhiGang* @version 1.0.0* @date 2021-03-16 02:13*/ @Service public class CustomOAuth2UserService extends CustomUserTypesOAuth2UserService {@Autowiredprivate IUserService iUserService;@Autowiredprivate IRoleService iRoleService;public CustomOAuth2UserService(Map<String, Class<? extends OAuth2User>> customUserTypes) {super(customUserTypes);}@Overridepublic OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException {OAuth2User oauth2User = super.loadUser(userRequest);User user = iUserService.getById(1);if(user == null){user = iUserService.registerUser(oauth2User.getName(),"");}OAuth2AuthenticationUser authenticationUser = new OAuth2AuthenticationUser();BeanUtils.copyProperties(user,authenticationUser);authenticationUser.setSource(oauth2User);authenticationUser.setRoles(iRoleService.listRoleByUid(user.getId()));return authenticationUser;} }配置
/*** @author ShenTuZhiGang* @version 1.0.0* @date 2021-03-16 02:27*/ @Configuration public class CustomOAuth2Config {@Beanpublic Map<String, Class<? extends OAuth2User>> customOAuth2UserTypes(){Map<String, Class<? extends OAuth2User>> map = new HashMap<>();map.put("github", GithubOAuth2User.class);map.put("gitee", GiteeOAuth2User.class);return map;} }WebSecurityConfigurerAdapter
@Overrideprotected void configure(HttpSecurity http)throws Exception{// OAuth2登錄http.oauth2Login().redirectionEndpoint().baseUri("/login/oauth2/code/*").and().userInfoEndpoint().customUserType(GiteeOAuth2User.class,"gitee").and().permitAll()}application.yml?
spring:# Security Configsecurity:oauth2:client:registration:gitee:provider: giteeclient-id: {mm}client-secret: {mm}authorization-grant-type: authorization_coderedirect-uri: '{baseUrl}/login/oauth2/code/{registrationId}'scope: user_infoclient-name: Giteeclient-alias: giteeprovider:gitee:authorization-uri: https://gitee.com/oauth/authorizetoken-uri: https://gitee.com/oauth/tokenuser-name-attribute: iduser-info-uri: https://gitee.com/api/v5/user?
參考文章
?
總結
以上是生活随笔為你收集整理的Spring Security OAuth2——自定义OAuth2第三方登录(Gitee)并与UsernamePassword登录关联解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Security OAut
- 下一篇: Spring Session Redis