访问 vue 外部的 vue-msal 插件暴露对象

Posted

技术标签:

【中文标题】访问 vue 外部的 vue-msal 插件暴露对象【英文标题】:Acces vue-msal plugin's exposed object outside of a vue 【发布时间】:2021-01-22 02:58:27 【问题描述】:

我使用 vue-msal 插件 https://www.npmjs.com/package/vue-msal-2#auth-options--required- 为我的应用处理 microsoft 和 azure AD 身份验证。 在 vue 内部时,我可以毫无问题地使用 this.$msal 来使用暴露的方法,例如 signIn(),但我想做的是从 vue 外部访问这个对象。例如,我想创建如下服务:

import msal from 'vue-msal';
import store from '@/store';

export default 
  logIn(): void 
    msal.signIn();
  ,

  logOut(): void 
    msal.signOut();
  ,

  isAuthenticated(): boolean 
    return store.getters.logged;
  ,

  acquireToken(): Promise<string> 
    return msal.acquireToken();
  ,

  onLoginSuccess(): void 
    console.log('login success');
    this.acquireToken().then(token => store.commit('login', token));
  
;

然而这里的msal 指的是mixin 的数据对象,因此与$msal 不同。有没有办法从我的服务访问$msal

【问题讨论】:

遇到了同样的问题。在服务类中使用 this.$msal 运气好吗? 【参考方案1】:

为什么不改用 mixin?

import Vue from "vue";
import "./vue-msal.js";

Vue.mixin(
  methods: 
   signOut() 
      this.$msal.signOut();
   ,
   isAuthenticated() 
      return this.$msal.isAuthenticated();
   
  
);     

这样,您仍然可以实现相同的目标。

【讨论】:

以上是关于访问 vue 外部的 vue-msal 插件暴露对象的主要内容,如果未能解决你的问题,请参考以下文章

VUE中常用的几种import(模块文件)引入方式

kubernetes 暴露服务端口的几种方式

Vue.js常用插件之router路由(上)

Namenode 无法从 Docker 容器外部访问

K8S 之 将服务暴露给外部客户端

vue导入外部js文件的方法