| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> 使用React快速集成OneAuth -> 正文阅读 |
|
[JavaScript知识库]使用React快速集成OneAuth |
使用React快速集成OneAuth准备工作本节介绍如何将OneAuth 与您的SPA应用集成,使用OneAuth作为SPA应用的用户存储库并实现用户登录。 如果您正在构建一个由服务器端渲染的Web应用,参考Web应用集成用户登录 前提条件:
如果你没有相关的应用,只是期望学习如何使用,建议参考如下的资料 : React quickstart教您构建Vue.js应用程序的基础知识,React Quickstart 或者,如果您想快速开始,只需下载一个应用示例,请下载我们的React示例。 在OneAuth控制台创建SPA应用在您使用OneAuth可以登录用户之前,您需要在管理后台创建一个单页应用用于的OneAuth的 应用集成。
安装SDKnpm i --save @oneauth/sdk-core @oneauth/sdk-react @oneauth/sdk-core 会提供登录登出和鉴权所需的方法,@oneauth/sdk-react 中会提供对路由的鉴权功能和准备好的登录重定向页面 @oneauth/sdk-core 可单独使用。也可搭配@oneauth/sdk-react 使用。本文使用@oneauth/sdk-core 和@oneauth/sdk-react 共同来完成集成。 配置 @oneauth/sdk-react初始化时需要传入 实例化@oneauth/sdk-core 和@oneauth/sdk-react@oneauth/sdk-react 提供了一个登录重定向的页面,和一个鉴权路由。 你需要把登录重定向页面配置到路由当中。 并将需要鉴权的页面配置在鉴权路由之下。
import OneAuth from '@oneauth/sdk-core' import { Security, LoginCallback, SecurityRoute } from '@oneauth/sdk-react' import { BrowserRouter, Route, Link } from 'react-router-dom' function App() { ?const oneAuth = new OneAuth({ ? ?issuer: `kang.oneauth.cn/oauth/v1`, ? ?clientId: `2YXXZ78611K0c8906MX6RJ8c0s84VcQB`, ? ?redirectUri: `[http://localhost:3000/callback](http://localhost:3000/callback)`, ? ?scopes: ['openid', 'profile', 'email'], }) ?return <>{/** 省略 **/}</> } ? export default App ? ? 添加一个登录按钮import OneAuth from '@oneauth/sdk-core' import { Security, LoginCallback, SecurityRoute } from '@oneauth/sdk-react' import { BrowserRouter, Route, Link } from 'react-router-dom' function App() { ?const oneAuth = new OneAuth({ ? ?issuer: `kang.oneauth.cn/oauth/v1`, ? ?clientId: `2YXXZ78611K0c8906MX6RJ8c0s84VcQB`, ? ?redirectUri: `[http://localhost:3000/callback](http://localhost:3000/callback)`, ? ?scopes: ['openid', 'profile', 'email'], }) ?//添加一个登录按钮 ?const login = () => oneAuth.login() ?return ( ? ?<> ? ? ?<button onClick={login}>Login</button> ? ?</> ) } ? export default App 添加路由需要从@oneauth/sdk-react 中引入
并放置到页面中。 然后将@oneauth/sdk-core 的实例传递给 <Security oneAuth={oneAuth} /> import './App.css' import OneAuth from '@oneauth/sdk-core' import { Security, LoginCallback, SecurityRoute } from '@oneauth/sdk-react' import { BrowserRouter, Route, Link } from 'react-router-dom' import { About } from './about' function App() { ?const oneAuth = new OneAuth({ ? ?issuer: `kang.oneauth.cn/oauth/v1`, ? ?clientId: `2YXXZ78611K0c8906MX6RJ8c0s84VcQB`, ? ?redirectUri: `[http://localhost:3000/callback](http://localhost:3000/callback)`, ? ?scopes: ['openid', 'profile', 'email'], }) ?const login = () => oneAuth.login() ?return ( ? ?<BrowserRouter> ? ? ?<div className="App"> ? ? ? ?<Security oneAuth={oneAuth}> ? ? ? ? ?<button onClick={login}>Login</button> ? ? ? ? ?<br /> ? ? ? ? ?<Link to="/home">Home</Link> ? ? ? ? ?<Link to="/about">About</Link> ? ? ? ? ?<Route path="/home"> ? ? ? ? ? ?<h1>Home</h1> ? ? ? ? ?</Route> ? ? ? ? ?<Route path="/about"> ? ? ? ? ? ?<h1>About</h1> ? ? ? ? ?</Route> ? ? ? ?</Security> ? ? ?</div> ? ?</BrowserRouter> ) } ? export default App 添加登录重定向页面配置登录重定向页面的路由时, 需与@oneauth/sdk-core 的实例化参数 import './App.css' import OneAuth from '@oneauth/sdk-core' import { Security, LoginCallback, SecurityRoute } from '@oneauth/sdk-react' import { BrowserRouter, Route, Link } from 'react-router-dom' import { About } from './about' function App() { ?const oneAuth = new OneAuth({ ? ?issuer: `kang.oneauth.cn/oauth/v1`, ? ?clientId: `2YXXZ78611K0c8906MX6RJ8c0s84VcQB`, ? ?redirectUri: `[http://localhost:3000/callback](http://localhost:3000/callback)`, ? ?scopes: ['openid', 'profile', 'email'], }) ?const login = () => oneAuth.login() ?return ( ? ?<BrowserRouter> ? ? ?<div className="App"> ? ? ? ?<Security oneAuth={oneAuth}> ? ? ? ? ?<button onClick={login}>Login</button> ? ? ? ? ?<br /> ? ? ? ? ?<Link to="/home">Home</Link> ? ? ? ? ?<Link to="/about">About</Link> ? ? ? ? ?<Route path="/home"> ? ? ? ? ? ?<h1>Home</h1> ? ? ? ? ?</Route> ? ? ? ? ?<Route path="/about"> ? ? ? ? ? ?<h1>About</h1> ? ? ? ? ?</Route> ? ? ? ? ?<Route path="/callback"> ? ? ? ? ? ?<LoginCallback /> ? ? ? ? ?</Route> ? ? ? ?</Security> ? ? ?</div> ? ?</BrowserRouter> ) } ? export default App 添加安全路由给 about 页面添加鉴权 如此一来,每次打开 about 页面时都会检查用户是否登录了。 如果没有登录则会跳转到登录页。 登录完成后会跳转回来。 import './App.css' import OneAuth from '@oneauth/sdk-core' import { Security, LoginCallback, SecurityRoute } from '@oneauth/sdk-react' import { BrowserRouter, Route, Link } from 'react-router-dom' import { About } from './about' function App() { ?const oneAuth = new OneAuth({ ? ?issuer: `kang.oneauth.cn/oauth/v1`, ? ?clientId: `2YXXZ78611K0c8906MX6RJ8c0s84VcQB`, ? ?redirectUri: `[http://localhost:3000/callback](http://localhost:3000/callback)`, ? ?scopes: ['openid', 'profile', 'email'], }) ?const login = () => oneAuth.login() ?return ( ? ?<BrowserRouter> ? ? ?<div className="App"> ? ? ? ?<Security oneAuth={oneAuth}> ? ? ? ? ?<button onClick={login}>Login</button> ? ? ? ? ?<br /> ? ? ? ? ?<Link to="/home">Home</Link> ? ? ? ? ?<Link to="/about">About</Link> ? ? ? ? ?<Route path="/home"> ? ? ? ? ? ?<h1>Home</h1> ? ? ? ? ?</Route> ? ? ? ? ?<SecurityRoute path="/about"> ? ? ? ? ? ?<About /> ? ? ? ? ?</SecurityRoute> ? ? ? ? ?<Route path="/callback"> ? ? ? ? ? ?<LoginCallback /> ? ? ? ? ?</Route> ? ? ? ?</Security> ? ? ?</div> ? ?</BrowserRouter> ) } ? export default App ? |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 2:58:24- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |