日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Security OAuth2——自定义OAuth2第三方登录(Gitee)并与UsernamePassword登录关联解决方案

發布時間:2024/10/5 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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登录关联解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。