Vue + electron webview实现token免登陆

2 篇文章 0 订阅
1 篇文章 0 订阅

electron webview实现token免登陆


webview的免登陆访问主要是通过其preload属性将web网页上保存的token存到webview内嵌的页面中,从而实现免登陆功能。

vue文件

<template>
    <div style="font-size: 16px" v-loading="!src">
      <webview id="webview" ref="webview" :src="src" allowpopups :preload="preload"></webview>
      <el-button type="primary" class="btn" @click="close">关闭窗口</el-button>
    </div>
</template>

<script>
import { remote, ipcRenderer } from 'electron'
import { EVENT_OPEN_WEB_EXPLAIN_RESOURCE, EVENT_RENDER_CLOSE_EXPLAIN } from '../../shared/events'
import { token } from '../../../public/preload'
export default {
  name: 'bookmark',
  data () {
    return {
      src: '',
      preload: `file://${__static}/preload.js` //js文件不能被打包压缩
    }
  },
  mounted () {
  // webview控制台
  // const webviewConsole = document.querySelector('webview')
  // webviewConsole.addEventListener('dom-ready', () => {
  //   webviewConsole.openDevTools()
  // })
  const webview = this.$refs.webview
  webview.addEventListener('new-window', (e) => {
    const protocol = require('url').parse(e.url).protocol
    if (protocol === 'http:' || protocol === 'https:') {
      webview.src = e.url
    }
  })
  ipcRenderer.on(EVENT_OPEN_WEB_EXPLAIN_RESOURCE, (evt, arg, details) => {
    this.src = arg
    console.log(details)
  })
  },
  methods: {
    close () {
      ipcRenderer.send(EVENT_RENDER_CLOSE_EXPLAIN)
    }
  },
  created() {
    // webview.openDevTools()
    // token()
  }
}
</script>

<style scoped>
webview {
  display: flex;
  height: -webkit-fill-available;
}
.btn {
  position: fixed;
  bottom: 40px;
  right: 20px;
}
</style>

preload.js文件

preload.js(放在public)
const electron = require('electron')
function writeToken() {
let userInfoToken = electron.remote.getGlobal('user').accessToken
document.cookie = `Login-Token=bearer ${userInfoToken}`
}

writeToken()
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue Electron 是一种用于构建跨平台桌面应用程序的开源框架,结合了 Vue.jsElectron.js 技术。在 Vue Electron实现自动更新需要借助 Electron 的 autoUpdater 模块和一些其他辅助工具。 首先,需要在主进程(`main.js`)中配置自动更新。可以使用 Electron 的 autoUpdater 模块来检查新版本,并自动下载和安装更新。具体步骤如下: 1. 导入 autoUpdater 模块:在 `main.js` 文件中添加 `const { autoUpdater } = require('electron-updater')`。 2. 配置更新服务器地址:通过 `autoUpdater.setFeedURL()` 方法设置更新服务器的地址,例如 `autoUpdater.setFeedURL('https://your-update-server-url')`。 3. 监听更新事件:使用 `autoUpdater.on()` 方法监听自动更新过程中的各个事件。例如可以监听 `checking-for-update`、`update-available`、`update-not-available`、`download-progress` 和 `update-downloaded`。 4. 触发检查更新:通过 `autoUpdater.checkForUpdates()` 方法触发检查更新的过程,在应用启动时或者可以通过某个按钮点击事件来手动检查更新。 接下来,需要在渲染进程(Vue 组件)中显示更新提示和进行更新操作。具体步骤如下: 1. 在渲染进程的代码中,可以监听 `message` 事件来接收主进程发送的消息,从而在用户界面上显示更新提示。 2. 监听到更新提示后,可以弹出一个对话框,询问用户是否进行更新。如果用户选择更新,可以通过 `ipcRenderer.send()` 方法向主进程发送消息,触发下载和安装更新的过程。 3. 主进程监听到渲染进程发送的更新请求后,可以通过 `autoUpdater.downloadUpdate()` 方法来下载更新文件。 4. 下载完成后,通过 `autoUpdater.quitAndInstall()` 方法来安装更新并重启应用。 以上就是使用 Vue Electron 实现自动更新的基本步骤。需要注意的是,还需要在应用的打包配置中加入相应的逻辑,以使自动更新在不同平台下运行正常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值