vue2.0实现单点登录思路以及简单代码

首先单点登录简单来说就是不走自己的登录页走三方的登录系统,然后通过重定向回到自己的系统中,那么就需要有三个必须参数

1.三方的登录地址

2.重定向回到系统的地址

3.三方系统获得的token令牌

一切准备就绪后  开始着手码代码了

         首先在导航守卫中进行鉴权,当用户想要跳转一个不在白名单中的页面时,判断当前用户是否携带了token,如果携带token则正常跳转,如果没有携带token则重定向至三方登录页面。

        在跳转至三方页面时将登录后的重定向回来的地址拼接到地址栏。这样在三方的登录页面登陆成功后,会在地址栏携带用户的code,跳转至本项目的承接页。

        承接页,顾名思义就是用于两个系统的承接。在跳转会承接页后可以用this.$router.query函数将地址栏携带的参数拿到,调用后端接口 获取本系统颁发的小token。

        承接页基本没啥  代码自取

<template>

  <div>

  </div>

</template>

<script>

import operatorToken from '@/utils/data.token'

export default {

  name: 'bridge',

  data () {

    return {

    }

  },

  created () {

    this.init()

  },

  methods: {

    async init () {

      var po = this.$route.query.code

      var [err, result] = await this.$to(this.$api.Permission.getToken(po))

      if (err || result.returnCode !== 1) { return false }

      var bigToken = result.data.oneAccessToken

      var token = result.data.accessToken

      operatorToken.set(bigToken, token)

      this.$router.push({ name: 'dashboard' })

    }

  }

}

</script>

        将接口获取的大小token都存到localStorage中方便后续使用。跳转首页 

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
可以使用 vue-router 和 axios 实现登录功能。首先,需要在路由中设置登录页面和登录后的页面,然后在登录页面中使用表单获取用户输入的用户名和密码,通过 axios 发送 POST 请求到后端验证用户信息。如果验证成功,将用户信息存储到本地存储或 Vuex 中,然后跳转到登录后的页面。如果验证失败,提示用户重新输入正确的用户名和密码。具体实现可以参考以下代码: // 路由配置 const router = new VueRouter({ routes: [ { path: '/login', component: Login }, { path: '/home', component: Home, meta: { requiresAuth: true } } ] }) // 登录页面组件 const Login = { data() { return { username: '', password: '' } }, methods: { login() { axios.post('/api/login', { username: this.username, password: this.password }).then(response => { // 登录成功,保存用户信息并跳转到首页 localStorage.setItem('user', JSON.stringify(response.data)) this.$router.push('/home') }).catch(error => { // 登录失败,提示用户重新输入 alert('用户名或密码错误') }) } }, template: ` <div> <input v-model="username" placeholder="请输入用户名"> <input v-model="password" placeholder="请输入密码" type="password"> <button @click="login">登录</button> </div> ` } // 首页组件 const Home = { computed: { user() { return JSON.parse(localStorage.getItem('user')) } }, template: ` <div> <p>欢迎 {{ user.username }} 登录</p> <button @click="logout">退出登录</button> </div> `, methods: { logout() { // 清除用户信息并跳转到登录页面 localStorage.removeItem('user') this.$router.push('/login') } }, beforeRouteEnter(to, from, next) { // 判断用户是否已登录,未登录则跳转到登录页面 if (!localStorage.getItem('user')) { next('/login') } else { next() } } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值