Spring Boot 实现微信、QQ 绑定登录

2024-06-23 23:20

本文主要是介绍Spring Boot 实现微信、QQ 绑定登录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

      • 1. 项目环境
      • 2. 创建Spring Boot项目
      • 3. 配置微信和QQ开发平台
      • 4. 配置Spring Security
      • 5. 配置Spring Security
      • 6. 创建登录和主页控制器
      • 7. 创建视图
      • 8. 运行项目
      • 9. 处理用户信息
      • 结论

在这里插入图片描述

🎉欢迎来到SpringBoot框架学习专栏~


  • ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹
  • ✨博客主页:IT·陈寒的博客
  • 🎈该系列文章专栏:SpringBoot
  • 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习
  • 🍹文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏
  • 📜 欢迎大家关注! ❤️

在现代应用程序中,第三方登录(如微信和QQ登录)已成为提高用户注册和登录体验的重要功能。本文将介绍如何使用Spring Boot实现微信和QQ的绑定登录功能。

在这里插入图片描述

1. 项目环境

我们将使用以下技术栈来实现这个功能:

  • Spring Boot
  • Spring Security
  • OAuth2 客户端库
  • 微信和QQ的开放平台

2. 创建Spring Boot项目

首先,使用Spring Initializr创建一个新的Spring Boot项目,选择以下依赖:

  • Spring Web
  • Spring Security
  • OAuth2 Client

3. 配置微信和QQ开发平台

在微信和QQ开放平台注册应用,获取应用的AppID和AppSecret。记录下这些信息,因为它们将在我们的Spring Boot应用中使用。

4. 配置Spring Security

application.ymlapplication.properties中配置微信和QQ的OAuth2客户端信息:

spring:security:oauth2:client:registration:qq:client-id: your-qq-app-idclient-secret: your-qq-app-secretclient-name: QQprovider: qqredirect-uri: "{baseUrl}/login/oauth2/code/qq"authorization-grant-type: authorization_codescope: get_user_infoprovider:qq:authorization-uri: https://graph.qq.com/oauth2.0/authorizetoken-uri: https://graph.qq.com/oauth2.0/tokenuser-info-uri: https://graph.qq.com/user/get_user_infouser-name-attribute: openidwechat:client-id: your-wechat-app-idclient-secret: your-wechat-app-secretclient-name: WeChatredirect-uri: "{baseUrl}/login/oauth2/code/wechat"authorization-grant-type: authorization_codescope: snsapi_loginprovider:wechat:authorization-uri: https://open.weixin.qq.com/connect/qrconnecttoken-uri: https://api.weixin.qq.com/sns/oauth2/access_tokenuser-info-uri: https://api.weixin.qq.com/sns/userinfouser-name-attribute: openid

5. 配置Spring Security

创建一个Spring Security配置类,配置OAuth2登录:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/", "/login**", "/css/**", "/js/**", "/images/**").permitAll().anyRequest().authenticated().and().oauth2Login().loginPage("/login").defaultSuccessUrl("/home").failureUrl("/login?error=true").userInfoEndpoint().userService(oauth2UserService());}@Beanpublic OAuth2UserService<OAuth2UserRequest, OAuth2User> oauth2UserService() {DefaultOAuth2UserService delegate = new DefaultOAuth2UserService();return request -> {OAuth2User oauth2User = delegate.loadUser(request);// 自定义用户信息处理return oauth2User;};}
}

6. 创建登录和主页控制器

创建控制器来处理登录和主页的请求:

@Controller
public class MainController {@GetMapping("/login")public String login() {return "login";}@GetMapping("/home")public String home(Model model, @AuthenticationPrincipal OAuth2User oauth2User) {model.addAttribute("name", oauth2User.getAttribute("name"));return "home";}
}

7. 创建视图

创建登录页(src/main/resources/templates/login.html):

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Login</title>
</head>
<body><h1>Login with</h1><a href="/oauth2/authorization/qq">QQ</a><a href="/oauth2/authorization/wechat">WeChat</a>
</body>
</html>

创建主页(src/main/resources/templates/home.html):

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Home</title>
</head>
<body><h1>Welcome, ${name}</h1>
</body>
</html>

8. 运行项目

启动Spring Boot应用,访问http://localhost:8080/login,选择QQ或微信登录,即可实现第三方登录功能。

9. 处理用户信息

在实际应用中,我们可能需要将第三方用户信息与本地用户进行绑定。可以在OAuth2UserService中进行处理,将第三方用户信息保存到本地数据库,并进行用户绑定。

@Bean
public OAuth2UserService<OAuth2UserRequest, OAuth2User> oauth2UserService() {DefaultOAuth2UserService delegate = new DefaultOAuth2UserService();return request -> {OAuth2User oauth2User = delegate.loadUser(request);String clientRegistrationId = request.getClientRegistration().getRegistrationId();// 根据不同的登录方式处理用户信息if ("qq".equals(clientRegistrationId)) {String openid = oauth2User.getAttribute("openid");// 根据openid处理用户信息} else if ("wechat".equals(clientRegistrationId)) {String openid = oauth2User.getAttribute("openid");// 根据openid处理用户信息}return oauth2User;};
}

结论

通过Spring Boot整合微信和QQ的OAuth2登录,我们可以实现一个灵活、强大的第三方登录系统,提高用户体验和系统安全性。在实际应用中,还可以根据具体需求进行更多的定制和扩展,如处理用户绑定、实现单点登录等。希望本文能够帮助你快速实现微信和QQ的绑定登录功能。


🧸结尾 ❤️ 感谢您的支持和鼓励! 😊🙏
📜您可能感兴趣的内容:

  • 【Java面试技巧】Java面试八股文 - 掌握面试必备知识(目录篇)
  • 【Java学习路线】2023年完整版Java学习路线图
  • 【AIGC人工智能】Chat GPT是什么,初学者怎么使用Chat GPT,需要注意些什么
  • 【Java实战项目】SpringBoot+SSM实战:打造高效便捷的企业级Java外卖订购系统
  • 【数据结构学习】从零起步:学习数据结构的完整路径

在这里插入图片描述

这篇关于Spring Boot 实现微信、QQ 绑定登录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1088565

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

Security OAuth2 单点登录流程

单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一注销(single sign-off)就是指

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory