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')
}
},