nuiapp 登录流程记之

 

import cookies from 'weapp-cookie'

// 点击登录按钮

formSubmit: function(e) {
const params = {
   password: this.base64Encodes(this.form.password),
   tenantName: ''
}
const names = this.form.userName
const a = Number(names)
if(!isNaN(a)){
   params['phone'] = this.form.userName,
   this.url = '/orion/users/common/phone/login'
} else {
   params['userName'] = this.form.userName,
   this.url = '/orion/users/common/login'
}
this.$http.post(this.url, params, false)   // false代表不需要传参数 
.then(res=>{
    cookies.set('USER_TOKEN', {'access_token': res.access_token,'userName':res.userName}, { domain: 'admins' })    // 登录成功把获取到的token 存起来
    this.getToken(res.access_token)  // 登录成功用获取到的token进入下一个函数
})
},

//密码处理了一下

base64Encodes(str){
   if (str != null && str != '') {
   let base64 = require('js-base64').Base64
      return base64.encode(str)
   } else {
     return ''
    }
},

// 根据token获取到用户名、用户id、资源、角色等,并把这些内容也存到 token 中,然后进去下一下页面中。

getToken(token){
this.$http.get('/orion/users/common/auth-info')
  .then(res=>{
     cookies.set('USER_TOKEN', {'access_token': token,'userName':res.userName,'userId':res.userId,'resources': res.resources,'roles': res.authorities}, { domain: 'admins' })
    this.getUserInfo(res.userId)
    this.$store.commit('getData')
    }).catch(err=>{
        console.log(err)
    })
},

// 根据 用户id 正式登录成功跳转到主页面。

getUserInfo(userId){
this.$http.get('/orion/users/admin/' + userId )
.then(res=>{
   uni.navigateTo({
   url: '/pages/main/main'
   })
}).catch(err=>{
   console.log(err)
})
}

//   登录流程完结-------------------

// api中的封装

import cookies from 'weapp-cookie'

function setRequest(url, method, data, needVerify) {
let token = cookies.get('USER_TOKEN', 'admins')   // 取 token 的方法
let header = {
   "content-type": "application/json",
}
if(needVerify){
   header['Authorization'] = 'Bearer ' + token.access_token
}
const promise = new Promise((resolve, reject) => {
const that = this;
uni.request({
     url: 'http://47.114.105.112:3108' + url,
     data,
     method,
     dataType: "json",
     header,
success: function(res) {
if (res.statusCode===200){
    resolve(res.data);
} else {
    reject(res.data),
uni.showToast({
    title: res.data||"网络出错,连接失败!"
})
if (res.data.error == "invalid_token"){
uni.showToast({
    title: "用户验证失败,请重新登录!"
})
    uni.clearStorageSync();
    uni.navigateTo({
    url: '/pages/login/login'
})
}
}
},
fail: function(err){
reject(err),
uni.showToast({
title: "网络出错,连接失败!"
})
}
});
});
return promise;
}
// needVerify表示接口是否需要添加token
function getRequest(url, data, needVerify = true) {
return setRequest(url, "GET", data, needVerify);
}

function postRequest(url, data, needVerify = true) {
return setRequest(url, "POST", data, needVerify);
}

function putRequest(url, data, needVerify = true) {
return setRequest(url, "PUT", data, needVerify);
}

function deleteRequest(url, data, needVerify = true) {
return setRequest(url, "DELETE", data, needVerify);
}

module.exports = {
get: getRequest,
post: postRequest,
put: putRequest,
delete: deleteRequest,
};

 

// store 中取token中的东西,用于其他页面

import cookies from 'weapp-cookie'
export default {
    state: {
        userName: '',
userId : '',
roles: '',
token: ''
    },

    getters: {
    },

    mutations: {
getData(state){
   state.userName = (cookies.get('USER_TOKEN', 'admins')).userName
   state.userId = (cookies.get('USER_TOKEN', 'admins')).userId
   state.roles = (cookies.get('USER_TOKEN', 'admins')).roles
   state.token = (cookies.get('USER_TOKEN', 'admins')).access_token
}
    }

}

// 其他页面用 store 中的内容

 

computed:{
   admin(){
       return this.$store.state.user.roles.includes('ROLE_Admin')
   }
},

posted @ 2021-11-30 17:31  笨笨白  阅读(103)  评论(0编辑  收藏  举报