一、获取用户信息

1.定义请求用户信息接口

(1)传token的动作,在请求拦截中添加

  1. service.interceptors.request.use(
  2. (config) => {
  3. const token = store.getters.token
  4. if (token) {
  5. config.headers.authorization = `Bearer ${token}`
  6. }
  7. return config
  8. },
  9. (error) => {
  10. return Promise.reject(error)
  11. }
  12. )

2.定义调用接口动作

在之前请求动作封装时提到过,把用户信息相关的请求动作放在一起方便管理,在store的action中
下面两个函数都返回了promise实例(async 函数返回的是promise实例),给调用者提供了后续操作的方法

  1. login(context, userInfo) {
  2. return new Promise((resolve, reject) => {
  3. const { username, password } = userInfo
  4. login({
  5. username,
  6. password: md5(password)
  7. })
  8. .then((res) => {
  9. console.log(res)
  10. // context.commit('setToken', res.data.token)
  11. this.commit('user/setToken', res.token)
  12. router.push('/')
  13. resolve(res)
  14. })
  15. .catch((error) => {
  16. reject(error)
  17. })
  18. })
  19. }
  20. },
  21. async getUserInfo() {
  22. try {
  23. const userInfo = await profile()
  24. this.commit('user/setRoles', userInfo)
  25. return userInfo
  26. } catch (error) {
  27. return Promise.reject(error)
  28. }
  29. }

3.在权限拦截时触发动作

此动作触发时机为,用户登录后,进入非白名单页面,检查是否系统保存了用户信息,没有的话,调用该接口