前文: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登录关联解决方案相关推荐

  1. Spring security 集成 JustAuth 实现第三方授权登录

    Spring security 集成 JustAuth 实现第三方授权登录脚手架: 一.特性 spring security 集成 JustAuth 实现第三方授权登录 : 此项目从 用户管理脚手架( ...

  2. Spring Security(5) 整合OAuth2

    文章目录 一.前言 二.什么是OAuth2? 三.应用场景 四.三部分 五.四种授权模式 1. 授权码模式(authorization code) 2. 简化模式(implicit) 3. 密码模式( ...

  3. Spring Security(二):OAuth2协议

    ​ Spring Security(二):OAuth2.0协议 活动地址:CSDN21天学习挑战赛 今天学习与研究了OAuth2.0协议,记录一下,方便后面查阅 OAuth2.0即是一个开放标准,我们 ...

  4. spring security webflux 自定义登录页面

    spring security webflux 自定义登录页面 ************************* 相关类及接口 ServerHttpSecurity public class Ser ...

  5. Spring全家桶-Spring Security之自定义数据库表认证和鉴权

    Spring全家桶-Spring Security之自定义数据库表认证和鉴权 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供 ...

  6. SpringSecurity权限管理框架系列(六)-Spring Security框架自定义配置类详解(二)之authorizeRequests配置详解

    1.预置演示环境 这个演示环境继续沿用 SpringSecurit权限管理框架系列(五)-Spring Security框架自定义配置类详解(一)之formLogin配置详解的环境. 2.自定义配置类 ...

  7. Spring Security OAuth2——自定义OAuth2第三方登录(Gitee)

    官方文档 https://docs.spring.io/spring-security/site/docs/current/reference/html5/#oauth2login-custom-pr ...

  8. (二)spring security:使用 OAuth2 SSO 实现单点登录

    一.前言 也许,我应该延续上一篇"(一)spring security:能做什么?"接着写,比如:如何实现RBAC权限动态控制.后端"验证码"生成与校验.JWT ...

  9. Spring Security5 Oauth2 自定义 OAuth2 Exception

    前言 spring-security5 oauth 开箱既用,认证时返回的是oauth2 标准的返回值 先来看看,默认的返回值 ## 未认证 {"error": "una ...

最新文章

  1. 关于用户升级到MacOS10.10系统后versions崩溃的问题
  2. css+图标偏移,css background-position 偏移的问题
  3. mysql 绕过select报错_MySQL注射绕过技巧(三)
  4. :after伪类+content内容清除浮动
  5. Python 进程 Process 模块 - Python零基础入门教程
  6. 计算机网络体系结构及协议
  7. springmvc生成注册验证码
  8. 使用Tomcat发布war包
  9. U3D AND UDK 各自特点
  10. Oracle数据库用户密码过期
  11. win11安装虚拟机
  12. 华为路由器配置子卡端口速率
  13. 小知识:Windows XP优化全攻略(网吧型)
  14. 传奇修改map地图教程_传奇地图事件触发脚本教程
  15. Dadroit JSON Viewer 查看json文件的利器
  16. python爬虫第7章(1)
  17. 泛微OA e-cology WorkflowCenterTreeData前台接口SQL注入漏洞复现
  18. 【电路设计小白】ADC芯片配置学习之一初期理论
  19. Android 天气APP(三十四)语音搜索
  20. echarts如何给柱状图设置渐变色

热门文章

  1. 正则表达式校验例子[原创]
  2. java代码实现购物车小程序_使用Taro实现小程序商城的购物车功能模块的实例代码...
  3. 千千静听歌词秀歌词搜不到_还在用QQ音乐、网易云?这个不到2M的听歌软件,美到炸!...
  4. mysql 数据库事务处理_MySQL数据库事务及其原理
  5. 网站运营手册_新媒体代运营模式价格
  6. zookeeper 密码_「附源码」Dubbo+Zookeeper 的 RPC 远程调用框架
  7. mysql语句中事务可靠性_MYSQL中的事务
  8. php 正则去除script,javascript正则实现php中的加入和去除反斜杠函数效果
  9. 列表逆序排序_Python零基础入门学习05:容器数据类型:列表和元组
  10. 用计算机图形学画字母,r 语言快速出图——单因素方差带字母显著性标记