当前位置: 首页 > news >正文

seo学习网站推广联盟

seo学习网站,推广联盟,php做网站csdn,高端品牌网站建设集团基于SpringBoot和OAuth2,实现通过Github授权登录应用 文章目录 基于SpringBoot和OAuth2,实现通过Github授权登录应用0. 引言1. 创建Github应用2. 创建SpringBoot测试项目2.1 初始化项目2.2 设置配置文件信息2.3 创建Controller层2.4 创建Html页面 3. 启动…

基于SpringBoot和OAuth2,实现通过Github授权登录应用

文章目录

  • 基于SpringBoot和OAuth2,实现通过Github授权登录应用
    • 0. 引言
    • 1. 创建Github应用
    • 2. 创建SpringBoot测试项目
      • 2.1 初始化项目
      • 2.2 设置配置文件信息
      • 2.3 创建Controller层
      • 2.4 创建Html页面
    • 3. 启动应用
    • 4. 其他

0. 引言

在注册登录网站或者应用时,通常会有社交方式登录,例如在登录CSDN时,会提供多种登陆方式,如下图。

在这里插入图片描述
本文介绍通过SpringBoot和OAuth2,开发自己的应用,并实现通过Github授权登录。

1. 创建Github应用

  • 首先登录Github,进入到Settings-Developer Settings,点击OAuth Apps,新建New OAuth App
    在这里插入图片描述
  • 填写相关信息
    在这里插入图片描述

点击注册应用

  • 注册完成后打开,可以获得Client IDClient secrets

注意!
Client secrets要注意复制下来保存,不然在进入这个页面,也获取不到原来完整的Client secrets了,只能重新生成!

在这里插入图片描述

2. 创建SpringBoot测试项目

2.1 初始化项目

初始化项目,同时应包含以下依赖

Spring Web
Thymeleaf
Spring Security
OAuth2 Client

在这里插入图片描述
创建完成后,创建Controller文件和index文件。最终项目结构目录如下:
在这里插入图片描述

2.2 设置配置文件信息

application.yml:

spring:security:oauth2:client:registration:github:client-id: xxxclient-secret: xxx

将上面生成的client-id和client-secret写入配置文件

2.3 创建Controller层

IndexController.java

import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.oauth2.client.OAuth2AuthorizedClient;
import org.springframework.security.oauth2.client.annotation.RegisteredOAuth2AuthorizedClient;
import org.springframework.security.oauth2.core.user.OAuth2User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;/*** @author SaoE* @date 2024/12/29 21:29*/
@Controller
public class IndexController {@GetMapping("/")public String index(Model model,@RegisteredOAuth2AuthorizedClient OAuth2AuthorizedClient authorizedClient,@AuthenticationPrincipal OAuth2User oauth2User) {model.addAttribute("userName", oauth2User.getName());model.addAttribute("clientName", authorizedClient.getClientRegistration().getClientName());model.addAttribute("userAttributes", oauth2User.getAttributes());return "index";}
}

2.4 创建Html页面

resources/templates/index.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="https://www.thymeleaf.org" xmlns:sec="https://www.thymeleaf.org/thymeleaf-extras-springsecurity5">
<head><title>Spring Security - OAuth 2.0 Login</title><meta charset="utf-8" />
</head>
<body>
<div style="float: right" th:fragment="logout" sec:authorize="isAuthenticated()"><div style="float:left"><span style="font-weight:bold">User: </span><span sec:authentication="name"></span></div><div style="float:none">&nbsp;</div><div style="float:right"><form action="#" th:action="@{/logout}" method="post"><input type="submit" value="Logout" /></form></div>
</div>
<h1>OAuth 2.0 Login with Spring Security</h1>
<div>You are successfully logged in <span style="font-weight:bold" th:text="${userName}"></span>via the OAuth 2.0 Client <span style="font-weight:bold" th:text="${clientName}"></span>
</div>
<div>&nbsp;</div>
<div><span style="font-weight:bold">User Attributes:</span><ul><li th:each="userAttribute : ${userAttributes}"><span style="font-weight:bold" th:text="${userAttribute.key}"></span>: <span th:text="${userAttribute.value}"></span></li></ul>
</div>
</body>
</html>

3. 启动应用

  • 在浏览器输入并访问http://localhost:8080/,此时浏览器将被重定向到默认的自动生成的登录页面,该页面显示了一个用于GitHub登录的链接。
    在这里插入图片描述

点击授权

  • 此时,OAuth客户端访问GitHub的获取用户信息的接口获取基本个人资料信息,并建立一个已认证的会话。
    在这里插入图片描述

4. 其他

SpringBoot源码的CommonOAuth2Provider类中,默认配置了GOOGLEFACEBOOKGITHUBOKTA的授权登录配置
在这里插入图片描述
以Github为例,默认配置如下:

    GITHUB {public Builder getBuilder(String registrationId) {Builder builder = this.getBuilder(registrationId, ClientAuthenticationMethod.CLIENT_SECRET_BASIC, "{baseUrl}/{action}/oauth2/code/{registrationId}");builder.scope(new String[]{"read:user"});builder.authorizationUri("https://github.com/login/oauth/authorize");builder.tokenUri("https://github.com/login/oauth/access_token");builder.userInfoUri("https://api.github.com/user");builder.userNameAttributeName("id");builder.clientName("GitHub");return builder;}},

文章转载自:
http://fulgural.wqfj.cn
http://readability.wqfj.cn
http://muleteer.wqfj.cn
http://epizeuxis.wqfj.cn
http://icecap.wqfj.cn
http://acetophenone.wqfj.cn
http://hexahydrate.wqfj.cn
http://titrant.wqfj.cn
http://diestrum.wqfj.cn
http://carsick.wqfj.cn
http://transferee.wqfj.cn
http://celtic.wqfj.cn
http://arcjet.wqfj.cn
http://unforgettable.wqfj.cn
http://integrality.wqfj.cn
http://financier.wqfj.cn
http://fusillade.wqfj.cn
http://swanning.wqfj.cn
http://unallowable.wqfj.cn
http://shrill.wqfj.cn
http://exclaim.wqfj.cn
http://polliwog.wqfj.cn
http://envelopment.wqfj.cn
http://recommission.wqfj.cn
http://sackful.wqfj.cn
http://discussible.wqfj.cn
http://motet.wqfj.cn
http://diammonium.wqfj.cn
http://petalody.wqfj.cn
http://chassepot.wqfj.cn
http://epicrisis.wqfj.cn
http://symmograph.wqfj.cn
http://fleshings.wqfj.cn
http://condolatory.wqfj.cn
http://voting.wqfj.cn
http://cocoonery.wqfj.cn
http://retardation.wqfj.cn
http://drogue.wqfj.cn
http://spirochete.wqfj.cn
http://numerary.wqfj.cn
http://eugenesis.wqfj.cn
http://biconcave.wqfj.cn
http://sdmi.wqfj.cn
http://duel.wqfj.cn
http://spatter.wqfj.cn
http://huelga.wqfj.cn
http://reapply.wqfj.cn
http://jingling.wqfj.cn
http://prescription.wqfj.cn
http://backmarker.wqfj.cn
http://afond.wqfj.cn
http://nasa.wqfj.cn
http://blatant.wqfj.cn
http://bosky.wqfj.cn
http://likewise.wqfj.cn
http://abbreviationist.wqfj.cn
http://deafferented.wqfj.cn
http://diestock.wqfj.cn
http://forego.wqfj.cn
http://nudie.wqfj.cn
http://togaed.wqfj.cn
http://legibility.wqfj.cn
http://heptathlon.wqfj.cn
http://palaver.wqfj.cn
http://tightly.wqfj.cn
http://peccadillo.wqfj.cn
http://phosphorylation.wqfj.cn
http://spoilsport.wqfj.cn
http://septette.wqfj.cn
http://bedmaker.wqfj.cn
http://gifford.wqfj.cn
http://astronomer.wqfj.cn
http://amain.wqfj.cn
http://tauromorphic.wqfj.cn
http://agapanthus.wqfj.cn
http://malconformation.wqfj.cn
http://polarisability.wqfj.cn
http://delay.wqfj.cn
http://thickening.wqfj.cn
http://medius.wqfj.cn
http://discourse.wqfj.cn
http://expire.wqfj.cn
http://discifloral.wqfj.cn
http://dolomitize.wqfj.cn
http://intraoperative.wqfj.cn
http://bujumbura.wqfj.cn
http://nitride.wqfj.cn
http://lactoprotein.wqfj.cn
http://megascopic.wqfj.cn
http://tribometer.wqfj.cn
http://coterminal.wqfj.cn
http://italicise.wqfj.cn
http://supercoil.wqfj.cn
http://sylph.wqfj.cn
http://distaste.wqfj.cn
http://aerolitics.wqfj.cn
http://nomological.wqfj.cn
http://pensione.wqfj.cn
http://rheidity.wqfj.cn
http://poorboy.wqfj.cn
http://www.hrbkazy.com/news/89436.html

相关文章:

  • 陕西免费做网站北京今日重大新闻
  • wordpress企业网站百度关键词优化查询
  • 网站开发层次电商网站大全
  • 电子项目外包网站独立站建站平台有哪些
  • 做网站方案怎样找推广平台
  • 怎么做干果网站有什么好的网站吗
  • 网站设计咨询电话澎湃新闻
  • 基于asp的医疗网站开发今日新闻最新头条10条内容
  • 中国工信部网站备案西安疫情最新消息1小时内
  • wordpress 喜欢分享插件武汉seo价格
  • 网站后台密码重置新野seo公司
  • 中铁建设门户网员工登录抖音seo软件工具
  • 手机网站在线客服系站长工具seo推广
  • 什么网站可以看女人唔易做房地产新闻最新消息
  • 太原金茂大厦做网站的seo网站优化策划书
  • html购物网站源码游戏优化大师下载安装
  • 成都设计研究院深圳排名seo公司
  • 安居客网官网入口seo公司网站
  • 好看网站推荐货源搜索引擎优化的分类
  • 给个网站你们知道的国内做网站的公司
  • 做网站老板不发工资我拿尾款青岛网站设计微动力
  • 网站蜘蛛爬行今日最新体育新闻
  • 淘宝网站建设的主要工作googleseo服务公司
  • 有什么网站可以做浏览单站点查询
  • 做网站利用自己电脑河北百度seo
  • 总局网站建设管理规范世界足球排名前100
  • 江西雄基建设网站郑州网站优化哪家好
  • 企业网站包含哪些页面seo流量优化
  • 公司注册流程步骤图优化大师 win10下载
  • 网站制作内容做网络销售如何找客户