Dolphinescheduler-ui加双因素认证

这篇具有很好参考价值的文章主要介绍了Dolphinescheduler-ui加双因素认证。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概要

Dolphinescheduler在ui登录页面,加一层二维码页面,通过二维码绑定动态验证码,实现登录双重认证

整体流程设计

1、改变登录页接收参数接口

src/service/modules/login/types.ts

interface LoginReq {
  userName: string
  userPassword: string
}
interface LoginRes {
  securityConfigType: string
  sessionId: string
  // 根据需求,增加自定义返回参数
  data: object
  code: number
  barCodeUrl: string
}
export { LoginReq, LoginRes }

注意:src/service/service.ts源码拦截器限制,只返回res.data,不返回code等信息

// The response to intercept
service.interceptors.response.use((res: AxiosResponse) => {
  // No code will be processed
  if (res.data.code === undefined) {
    return res.data
  }
  switch (res.data.code) {
    case 0:
      // ---只返回data---
      return res.data.data
    default:
      handleError(res)
      throw new Error()
  }
}, err)

2、更新用户登录页,控制登录、验证等页面跳转

登录格式src/views/login/index.tsx,新增提示

<NSpace>
  <NAlert
      title='首次登录:用户名 + 密码,绑定OTP码; 后续登录:用户名 + “密码 + OTP码”'
      type='info'
      style={{ marginTop: '10%' }}
  >
  </NAlert>
</NSpace>

Dolphinescheduler-ui加双因素认证,ui,大数据
登录逻辑src/views/login/use-login.ts

import { useRouter } from 'vue-router'
import { login } from '@/service/modules/login'
import { getUserInfo } from '@/service/modules/users'
import { useUserStore } from '@/store/user/user'
import type { Router } from 'vue-router'
import type { LoginRes } from '@/service/modules/login/types'
import type { UserInfoRes } from '@/service/modules/users/types'
import { useRouteStore } from '@/store/route/route'
import { useTimezoneStore } from '@/store/timezone/timezone'
import cookies from 'js-cookie'

export function useLogin(state: any) {
  const router: Router = useRouter()
  const userStore = useUserStore()
  const routeStore = useRouteStore()
  const timezoneStore = useTimezoneStore()

  const handleLogin = () => {
    state.loginFormRef.validate(async (valid: any) => {
      if (!valid) {
        const loginRes: LoginRes = await login({ ...state.loginForm })
		// TODO 新增,控制逻辑
        if ('barCodeUrl' in loginRes) {
          const barCodeUrl = loginRes.barCodeUrl
          // 跳转myqrcode页面,并传参barCodeUrl 
          router.push({ name: 'myqrcode', state: { barCodeUrl } })
        } else {
          // 原生代码,密码正确直接通过sessionId完成登录
          await userStore.setSessionId(loginRes.sessionId)
          await userStore.setSecurityConfigType(loginRes.securityConfigType)
          cookies.set('sessionId', loginRes.sessionId, { path: '/' })
          const userInfoRes: UserInfoRes = await getUserInfo()
          await userStore.setUserInfo(userInfoRes)
          const timezone = userInfoRes.timeZone ? userInfoRes.timeZone : 'UTC'
          await timezoneStore.setTimezone(timezone)
          const path = routeStore.lastRoute
          router.push({ path: path || 'home' })
        }
      }
    })
  }

  return {
    handleLogin
  }
}

3、新增二维码扫描,验证码绑定

路由配置src/router/routes.ts,新增二维码页面路径

/**
 * QR Code page
 */
const qrcodePage: RouteRecordRaw[] = [
  {
    path: '/myqrcode',
    name: 'myqrcode',
    component: components['myqrcode'],
    meta: {
      title: '验证码',
      auth: []
    }
  }
]
// qrcodePage为新增
const routes: RouteRecordRaw[] = [...basePage, ...loginPage, ...qrcodePage]

// 重新组织后导出
export default routes

views下创建和login并行目录myqrcode,包含文件如下:
src/views/myqrcode/index.tsx

/*
  (1)naive-ui库中的二维码标签<NQrCode/>,在2.36.0版本,开始提供该组件
  (2)login页面向myqrcode页面跳转params传参时,"vue-router": "^4.1.4"版本开始增加了删除未使用的参数这个功能;使用query如下:(本文使用state)
  		router.push({ name: 'myqrcode', query: { barCodeUrl : barCodeUrlValue } })
      	console.log('传递的数据: ', route.query.barCodeUrl)
 */
import { defineComponent, ref, onMounted } from 'vue'
import styles from './index.module.scss'
import {
  NButton,
  NQrCode,
  NSpace,
  NTag,
} from 'naive-ui'

import { useRouter, useRoute } from 'vue-router'
import type { Router } from 'vue-router'
import { useRouteStore } from '@/store/route/route'

const myqrcode = defineComponent({
  name: 'myqrcode',
  setup() {
    const route = useRoute()
    const state = history.state
    const barCodeUrlValue = ref('')
    onMounted(async () => {
      barCodeUrlValue.value = state.barCodeUrl
    })
    
    const router: Router = useRouter()
    const routeStore = useRouteStore()
    const handleLogin = () => {
      const path = routeStore.lastRoute
      router.push({ path: 'login' })
    }

    return {
      handleLogin,
      barCodeUrlValue
    }
  },
  render() {
    return (
      <div class={styles.container}>
        <div class={styles['code-model']}>
          <NSpace>
            <NQrCode id='qr-code' value={this.barCodeUrlValue} size={183}></NQrCode>
          </NSpace>
          <NSpace>
            <NTag style={{ marginTop: '10%',  height: '80%', color: 'black', textColor: '#555', borderColor: '#555' }} >
              扫描二维码,获取“动态验证码”
              <br/>
              获取成功后,返回重新登录
            </NTag>
          </NSpace>
        </div>
        <div class={styles['back-model']}>
          <NButton
            class='btn-qrcode'
            round
            type='info'
            style={{ color: 'black' }}
            onClick={this.handleLogin}
          >
            返回
          </NButton>
        </div>
      </div>
    )
  }
})

export default myqrcode

src/views/myqrcode/index.module.scss

.container {
  width: 100%;
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
  background: #0098e1;

  .back-model {
    position: absolute;
    top: 20px;
    right: 30px;
    background: #fff;
  }

  .code-model {
    size: 600px;

    .tag-model {
      marginTop: 20%;
      width: 100%;
      color: black;
      textColor: #555;
      borderColor: #555
    }
  }
}

Dolphinescheduler-ui加双因素认证,ui,大数据

技术细节

(1)Naive-ui库中的二维码标签 NQrCode,在2.36.0版本,开始提供该组件
(2)login页面向myqrcode页面跳转params传参时,“vue-router”: "^4.1.4"版本开始增加了删除未使用的参数这个功能
https://segmentfault.com/q/1010000042469850
(3)vue3+ts打包报错
https://blog.csdn.net/weixin_42021688/article/details/128206358

技术名词

  • vue3
  • typescript
  • Naive UI

小结


如有不足,请多多指正!文章来源地址https://www.toymoban.com/news/detail-789626.html

到了这里,关于Dolphinescheduler-ui加双因素认证的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云双因素认证在Citrix Gateway思杰虚拟机上的实践

    为了让员工随时随地都能轻松访问工作所需的应用程序和资源,Citrix Gateway /虚拟桌面(VDI)为企业提供安全远程访问解决方案,既简化了员工远程访问过程,又做到了对企业应用程序和资源的访问安全管理。在Citrix Gateway 门户上启用宁盾云双因素认证(SaaS版MFA),可以为用

    2024年02月15日
    浏览(49)
  • 技巧:给excel某列数据加双引号和逗号,用于sql中in()查询

    就是需求给过来一个excel,我们要用其中的某一列作为条件去查询数据库,删数据或者改数据。 这种小需求写代码去解析excel不值得,直接写sql搞定。 在首尾加上单引号或者双引号就可以使用in(…)来查询。 excel-给某列数据加双引号和逗号,excel公式里转义 Excel中对特殊字符的

    2024年02月14日
    浏览(90)
  • 使用Microsoft-Authenticator做系统登录的二次身份验证(双因素认证)

    概念: 二次验证这个功能又叫双因素认证_百度百科或者叫双因子认证 双因素认证是一种采用时间同步技术的系统,采用了基于时间、事件和密钥三变量而产生的一次性密码来代替传统的静态密码。每个动态密码卡都有一个唯一的密钥,该密钥同时存放在服务器端,每次认证

    2024年02月13日
    浏览(36)
  • 数据库容量考虑因素

    其中在设计数据库时,我们需要根据业务需求确定考虑数据类型是以下的哪一种,以选择合适的数据库类型和容量 结构化数据:如数字、文本、日期等 半结构化数据:如XML、JSON等 非结构化数据:如图片、音频、视频等 关系型数据:如MySQL、PostgreSQL等 非关系型数据:如Mon

    2024年02月12日
    浏览(40)
  • 数据加密技术:保障隐私与安全的关键因素

    数据加密技术是一种在传输和存储过程中对数据进行加密的方法,以保护数据的安全和隐私。随着大数据时代的到来,数据加密技术在各个领域中发挥着越来越重要的作用。在这篇文章中,我们将深入探讨数据加密技术的核心概念、算法原理、具体操作步骤和数学模型,以及

    2024年04月26日
    浏览(37)
  • 选择安全数据交换系统时 要考虑哪些因素?

    安全数据交换系统是一种专门设计用于在不同的网络环境(如内部不同网络,内部网络和外部网络)之间安全传输数据的解决方案。它通常包括一系列的技术和流程,旨在确保数据在传输过程中的完整性、机密性和可用性。 安全数据交换系统可以解决以下问题: 1、数据安全

    2024年01月16日
    浏览(42)
  • HDFS中数据迁移的使用场景和考量因素

    冷热集群数据同步、分类存储 集群数据整体搬迁 当公司业务迅速的发展,导致的当前的服务器数量资源出现临时紧张的时候,为了更高效的利用资源,会将A机房数据整体迁移到B机房的,原因可能是B机房机器多,而且B机房本身开销较A机房低些等 数据的准实时同步 数据准实

    2024年02月11日
    浏览(75)
  • R语言数据分析笔记——方差分析(单因素方差分析、双因素方差分析)在Excel、SPSS、R语言中的操作)

    前言:本文为个人学习笔记,为各大网站上的教学内容之综合整理,综合整理了①方差分析的基础知识、②方差分析(单因素方差分析、双因素方差分析)在Excel、SPSS、R语言中的操作),尽量标明出处。另因能力所限或有纰漏之处,故仅供参考,欢迎交流指正。 基本概念 指

    2024年02月05日
    浏览(48)
  • 人为因素或病毒攻击,你的数据没有想象中安全!

    如何实现数据安全?围绕“敏感数据不出门”的目标出发,企业可以组建安全技术体系、安全策略体系、安全组织及运营体系,逐渐搭建起企业的数据安全的城墙壁垒。 但这些其实都属于上层管理的预防控制,来自下层的人为因素以及外部的病毒攻击隐患,无时无刻都在挑战

    2024年01月20日
    浏览(34)
  • Python数据分析案例20——我国家庭资产影响因素分析

    本次案例较为简单,符合人文社科、经济学管理学等专业本科生适用。 本文的数据来源于 中国家庭金融调查( China Household Finance Survey , CHFS )是西南财经大学中国家庭金融调查与研究中心(下称中心)在全国范围内开展的抽样调查项目,由甘犁教授于 2009 年发起并领导,收

    2024年02月09日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包