返回顶部
首页 > 资讯 > 精选 >spring-boot集成spring-security的oauth2如何实现github登录网站
  • 321
分享到

spring-boot集成spring-security的oauth2如何实现github登录网站

springbootoauth2.0 2023-05-30 23:05:38 321人浏览 八月长安
摘要

这篇文章主要为大家展示了“spring-boot集成spring-security的oauth2如何实现GitHub登录网站”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“spring-boot集

这篇文章主要为大家展示了“spring-boot集成spring-security的oauth2如何实现GitHub登录网站”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“spring-boot集成spring-security的oauth2如何实现github登录网站”这篇文章吧。

引入依赖

<dependency> <groupId>org.springframework.security.oauth</groupId> <artifactId>spring-security-oauth3</artifactId></dependency>

添加配置

security: oauth3:  client:   client-id:   client-secret:   accessTokenUri: https://github.com/login/oauth/access_token   userAuthorizationUri: Https://github.com/login/oauth/authorize   clientAuthenticationScheme: fORM   reGIStered-redirect-uri: ${site.baseUrl}/github_login   use-current-uri: false  resource:   userInfoUri: https://api.github.com/user  sso:   login-path: /github_login

在启动类上加上注解 @EnableOAuth3Sso 一个注解搞定一切

注意:

  1. github上的申请应用,这里不多说,要注意的是github上要填的回调地址是跟上面配置的 registered-redirect-uri 一样的

  2. 加上 @EnableOAuth3Sso 注解后,原来系统里配置的 /login 就默认成了oauth3登录的路由了,这里通过配置 security.oauth3.sso.login-path 更改了

保存登录用户

注解 @EnableOAuth3Sso 登录成功了,会把用户信息写入到内存,还是跟session生命周期一样的,session没了,它就没了, 所以既然登录成功了,就要保存到数据库里,而且也可以跟本地用户做关联,登录成功了,直接读取用户的权限信息

保存用户登录信息,只要实现一个接口就可以了,在oauth3授权成功了,它会回调这个接口的,上代码

这个类放哪都可以,只要能被spring管理就行

@Beanpublic PrincipalExtractor principalExtractor() { return map -> {  String login = map.get("login").toString();//github的登录名  GithubUser githubUser = githubUserService.findByLogin(login);  User user;  if (githubUser == null) {   githubUser = new GithubUser();   githubUser = githubUserService.convert(map, githubUser);   //创建一个本地用户   user = userService.findByUsername(login);   if (user == null) {    user = new User();    user.setUsername(login);   } else {    user.setUsername(login + "_" + githubUser.getGithubId());   }   user.setEmail(githubUser.getEmail());   user.setBio(githubUser.getBio());   user.setUrl(githubUser.gethtml_url());   user.setPassword(new BCryptPassWordEncoder().encode(StrUtil.randomString(16)));   user.setInTime(new Date());   user.setBlock(false);   user.setToken(UUID.randomUUID().toString());   user.setAvatar(githubUser.getAvatar_url());   user.setAttempts(0);   user.setScore(2000);// first register score 2000   user.setSpaceSize(siteConfig.getUserUploadSpaceSize());   user.setGithubUser(githubUser);   // set user's role   Role role = roleService.findById(3); // normal user   Set roles = new HashSet();   roles.add(role);   user.setRoles(roles);   userService.save(user);  } else {   githubUser = githubUserService.convert(map, githubUser);   user = githubUser.getUser();   githubUserService.save(githubUser);  }  //加载用户的权限信息  return yiiuUserDetailService.loadUserByUsername(user.getUsername()); };}

上面 yiiuUserDetailService.loadUserByUsername(user.getUsername()) 这段代码见下面,就是spring-security的加载用户权限代码

@Servicepublic class YiiuUserDetailService implements UserDetailsService { private Logger log = Logger.getLogger(YiiuUserDetailService.class); @Autowired private UserService userService; @Autowired private PermissionService permissionService; public UserDetails loadUserByUsername(String username) {  User user = userService.findByUsername(username);  if (user != null) {   List<Permission> permissions = permissionService.findByAdminUserId(user.getId());   List<GrantedAuthority> grantedAuthorities = new ArrayList<>();   for (Permission permission : permissions) {    GrantedAuthority grantedAuthority = new SimpleGrantedAuthority(permission.getName());    grantedAuthorities.add(grantedAuthority);   }   return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(),     true, true, true, !user.isBlock(), grantedAuthorities);  } else {   log.info("用户" + username + " 不存在");   throw new UsernameNotFoundException("用户名或密码不正确");  } }}

以上是“spring-boot集成spring-security的oauth2如何实现github登录网站”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: spring-boot集成spring-security的oauth2如何实现github登录网站

本文链接: https://lsjlt.com/news/222025.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • spring-boot集成spring-security的oauth2如何实现github登录网站
    这篇文章主要为大家展示了“spring-boot集成spring-security的oauth2如何实现github登录网站”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“spring-boot集...
    99+
    2023-05-30
    spring boot oauth2.0
  • Spring boot security权限管理集成cas单点登录功能的实现
    目录1.Spring boot集成Spring security2.部署CAS server3.配置CAS client挣扎了两周,Spring security的cas终于搞出来了...
    99+
    2024-04-02
  • 在Spring Boot 中使用Spring security 如何实现对CAS进行集成
    今天就跟大家聊聊有关在Spring Boot 中使用Spring security 如何实现对CAS进行集成,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.创建工程创建Maven工...
    99+
    2023-05-31
    spring security cas
  • Spring Security如何实现登录验证
    这篇文章主要讲解了“Spring Security如何实现登录验证”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring Security如何实现登录验证”吧!一、理...
    99+
    2023-06-26
  • Spring security如何重写Filter实现json登录
    Spring security 重写Filter实现json登录 在使用SpringSecurity中,大伙都知道默认的登录数据是通过key/value的形式来传递的,默认情况下不支...
    99+
    2024-04-02
  • Spring Security如何实现用户名密码登录
    小编给大家分享一下Spring Security如何实现用户名密码登录,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!引言你在服务端的安全管理使用了 Sp...
    99+
    2023-06-21
  • Spring Boot中使用Spring Security如何实现安全控制
    Spring Boot中使用Spring Security如何实现安全控制?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。准备工作首先,构建一个简单的Web工程,...
    99+
    2023-05-31
    springboot spring security
  • Spring Boot Security实现防重登录及在线总数的方法
    这篇文章主要讲解了“Spring Boot Security实现防重登录及在线总数的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring Boot...
    99+
    2024-04-02
  • Spring Boot 集成 Kafkad的实现示例
    目录前言 为什么使用kafka?业务场景基本架构 常用术语 代码演示 外部依赖:配置文件:发送消息:消费消息:演示工程代码 Spring Boot 作为主流微服务框架,拥有成熟的社区...
    99+
    2024-04-02
  • Spring Boot 集成 Kafkad的实现方法
    本篇内容介绍了“Spring Boot 集成 Kafkad的实现方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Spring Boot 作...
    99+
    2023-06-14
  • spring boot 1.5.4 集成shiro+cas,实现单点登录和权限控制
    1.添加maven依赖(先安装好cas-server-3.5.2,安装步骤请查看本文参考文章) <dependency> <groupId>org.apache.shiro</groupId&g...
    99+
    2023-05-31
    springboot shiro cas
  • spring-security关闭登录框的实现示例
    事情要从同事的一个项目说起,项目中需要集成公司的单点登录系统,但是无论如何都无法跳转到正常的登录页面。相反,却始终跳转到另外一个登录页面。 但是代码却非常简单,简化一下 @Co...
    99+
    2024-04-02
  • Spring boot如何搭建web应用集成thymeleaf模板实现登陆
    这篇文章将为大家详细讲解有关Spring boot如何搭建web应用集成thymeleaf模板实现登陆,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Spring boot 搭建web应用集成了thymel...
    99+
    2023-05-30
    springboot web thymeleaf
  • 使用Spring boot如何实现对Mybatis进行集成
    使用Spring boot如何实现对Mybatis进行集成?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。本章目标整合 Mybatis ,并集成 Druid 数据...
    99+
    2023-05-31
    springboot mybatis
  • Springboot WebFlux集成Spring Security实现JWT认证的示例
    目录1 简介 2 项目整合 2.1 JWT工具类 2.2 JWT的过滤器 2.3 Security的配置 2.4 获取JWT的Controller 3 总结 1 简介 在之前的文章...
    99+
    2024-04-02
  • Spring Security如何实现自动登陆功能
    这篇文章主要介绍Spring Security如何实现自动登陆功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!当我们在登录像QQ邮箱这种大多数的网站,往往在登录按键上会有下次自动登录这个选项,勾选后登录成功,在一段...
    99+
    2023-06-25
  • 基于Spring Boot的企业门户网站设计与实现(Java+spring boot+MySQL)
    获取源码或者论文请私信博主 演示视频: 基于Spring Boot的企业门户网站设计与实现(Java+spring boot+MySQL) 使用技术: 前端:html css javascript jQuery ajax thym...
    99+
    2023-09-05
    java spring boot mysql
  • 使用Spring Boot如何实现对Dubbo框架进行集成
    这期内容当中小编将会给大家带来有关使用Spring Boot如何实现对Dubbo框架进行集成,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.创建工程在pom.xml中加入依赖创建工程名为:(1)spri...
    99+
    2023-05-31
    springboot dubbo
  • Spring Boot集成JavaMailSender发送邮件功能的实现
    目录前言集成步骤添加依赖邮件配置信息邮件配置类代码实现发送简单邮件邮件实体类业务实现类测试类扩展功能发送Html内容的邮件业务实现类测试类发送带附件邮件业务实现类测试类发送模板邮件添...
    99+
    2024-04-02
  • 使用Spring Boot如何实现集成Druid数据库连接池
    使用Spring Boot如何实现集成Druid数据库连接池?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1. 前言Druid数据库连接池由阿里巴巴开源,号称是java语言...
    99+
    2023-05-31
    springboot 数据库连接池 druid
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作