vue 项目使用oidc-client

Vue项目中使用 oidc-client

一、安装

添加 oidc-client 的npm 包

npm i oidc-client -s

二、配置

配置oidc协议

src/services/oidcConfig.ts

import {
    WebStorageStateStore } from "oidc-client";

// 服务器地址
const STS_DOMAIN: string = (process.env.NODE_ENV == "development" ?  'https://192.168.0.11:5001' :'https://192.168.0.11:45456');

// 客户端页面地址
const LOC_DOMAIN: string = window.location.origin;   // 默认:http://localhost:8080

export const userSettings = {
   
    userStore: new WebStorageStateStore({
    store: window.localStorage }),
    loadUserInfo:true,
    authority: STS_DOMAIN,   // 认证服务器
    client_id: 'aaa',        // 客户端ID
    client_secret: 'abcdef',
    // grant_type:'Implicit',    // //验证模式  Implicit 模式
    redirect_uri: LOC_DOMAIN+'/callback.html',   // 重定向URI,认证服务器回调的客户端页面
    automaticSilentRenew: true,    // 启用静默刷新token
    silent_redirect_uri: LOC_DOMAIN+'/silent-renew.html',
    response_type: 'id_token token',      // 授权类型  请求身份令牌和访问令牌
    scope: 'openid profile roles',       // 申请的权限范围
    post_logout_redirect_uri: LOC_DOMAIN,   // 注销重定向的url
    // filterProtocolClaims: true,        // 告诉oidc-client过滤掉OIDC协议内部用的声明信息,如: nonce, at_hash, iat, nbf, exp, aud, iss 和 idp
}

注:配置信息需要与后端配置相匹配。

对 oidc-client 的 UserManager 进行封装。

单例模式

src/services/AuthService.ts

import {
    UserManager, WebStorageStateStore, User } from 'oidc-client';
import {
    userSettings } from "@/services/oidcConfig";
import {
    ReplaySubject } from "rxjs";

export default class<
Vue OIDC 是一个 Vue.js 应用程序中的 OpenID Connect 客户端。OIDC 是一种身份验证协议,允许用户使用他们的身份验证凭据(如用户名和密码)登录到一个 Web 应用程序,而无需在每个应用程序中注册一个新的帐户。 Vue OIDC使用方法如下: 1. 安装 Vue OIDC: ```bash npm install vue-oidc-client --save ``` 2.Vue.js 应用程序的 main.js 文件中导入 Vue OIDC 并初始化: ```javascript import { createOidcAuth } from 'vue-oidc-client' const oidcAuth = createOidcAuth('auth0', { clientId: 'YOUR_CLIENT_ID', issuer: 'YOUR_ISSUER', redirectUri: 'http://localhost:8080/callback', scope: 'openid profile email', responseType: 'code' }) ``` 3.Vue.js 应用程序的 App.vue 文件中使用 Vue OIDC: ```vue <template> <div> <button v-if="!$oidc.isAuthenticated()" @click="$oidc.login()">Login</button> <button v-if="$oidc.isAuthenticated()" @click="$oidc.logout()">Logout</button> <div v-if="$oidc.isAuthenticated()"> <p>Welcome, {{ $oidc.user.profile.name }}!</p> <p>Your email is {{ $oidc.user.profile.email }}.</p> </div> </div> </template> <script> export default { mounted () { this.$oidc.userManager.getUser().then(user => { if (user) { console.log('User is logged in', user) } else { console.log('User is not logged in') } }) } } </script> ``` 在上面的示例中,我们使用 $oidc 对象来访问用户的身份验证状态和个人资料信息。如果用户已经登录,我们可以使用 $oidc.user 对象访问用户的个人资料信息。 总的来说,Vue OIDC 提供了一个方便的方式来使用 OpenID Connect 身份验证协议来保护您的 Vue.js 应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值