vue中两个项目之前免登录

vue中两个项目之前免登录

背景:最近跟客户对接,对方希望打通两个项目之前的权限,在客户项目A中点击一个按钮直接跳转到我们项目B的首页,跳过B项目的登录拦截,实现免登录跳转
思路:在A项目中点击跳转按钮跳转时会向后端请求一个接口,后端会返回新项目的域名+参数(例如loginName),前端需要将这个参数通过路由传递,在B项目中的路由守卫中获取到当前的路径,判断有loginName是否有值,有的话把loginName作为参数传入后端的免密登录的接口,后端返回token,前端存储token并直接跳转到首页
1.A项目的button事件

jumpProject() {
   getUrl().then((res) => {
     if (res.data.code === 2000) {
        //新页面打开
           window.open(
            res.data.data.url + "?loginName=" + res.data.data.code,
            "_blank"
          );
     }
  })
}

2.B项目全局路由守卫

const createRouter = () => new Router({
  mode: 'history', // hissoty模式 需要后端支持
  scrollBehavior: () => ({
    y: 0
  }),
  routes: constantRoutes
})
const router = createRouter()

router.beforeEach(async(to, from, next) => {
  document.title = getPageTitle(to.meta.title)
  //获取token
  const hasToken = getToken()
  
  // 获取当前跳转的路径
  var hrefs = window.location.href
  // 判断是否有loginName
  let hrefIdx = hrefs.indexOf('loginName=');
  //截取loginName=后面的字符串
  let loginName = hrefs.substring(hrefIdx + 10, hrefs.length);
  if (hrefIdx > -1 && (hasToken === '' || hasToken === undefined || hasToken === null)) {
    let params = {
      loginName: loginName
    }
    // 调用单点登录接口_ 状态码成功直接进入首页
    const { code } = await store.dispatch('user/login712', params);
    if (code == 2000) {
      //获取当前用户id
      const { id } = await store.dispatch('user/getInfo')
      // 获取菜单
      const accessRoutes = await store.dispatch('permission/generateRoutes',id)
      //添加路由
      router.addRoutes(accessRoutes)
      //跳转首页
      // 替换路由(如果不替换,直接登录到首页,会在A项目的路径后边直接加入B项目的路径)
      location.href = '/'
      next()
    }
  } else {
  //正常的逻辑
  }

欢迎各位大佬指教~

  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Nginx 是一款高性能的 Web 服务器,同时也是一款反向代理服务器,支持负载均衡、动静分离、HTTP 缓存等多种功能。在实际项目,我们经常需要部署多个 Vue 项目,利用 Nginx 可以简单地实现这个功能。 在部署两个 Vue 项目时,我们需要在服务器上分别部署两个不同的 Vue 项目,并分别启动它们的服务端口。同时,在 Nginx 的配置文件添加两个 server 配置,分别配置两个 Vue 项目所使用的域名或者 IP 地址、端口和访问路径等相关信息,如下: ``` server { listen 80; server_name vueproject1.com; location / { proxy_pass http://localhost:3000; ... } } server { listen 80; server_name vueproject2.com; location / { proxy_pass http://localhost:4000; ... } } ``` 以上面的配置为例,我们可以看到,在 Nginx 的配置文件,我们针对这两个 Vue 项目分别配置了 server 块,代表了两个不同的虚拟主机。每个 server 块包含了监听的端口和域名信息,以及访问路径的配置,其 location / 表示默认的访问路径。 对于每个 server 块的 location 配置,我们可以使用 proxy_pass 参数来指定要代理的服务地址,即代表 Vue 项目服务的端口号。这样就可以在 Nginx 实现两个 Vue 项目的反向代理和访问了。 最后,需要注意的是,在 Nginx 的配置文件修改完成后,需要重新加载配置,使其生效。可以使用 nginx -s reload 命令来重新加载 Nginx 的配置文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值