Commit cb93c6b7 authored by 刘怀志's avatar 刘怀志

feat(全局): 新需求项目转化为h5环境下运行

具备请求后台能力login getinfo跑通
parent 910d657f
import request from '@/utils/request' import request from '@/utils/request'
import Qs from 'qs'
import {encrypt} from "../utils/jsencrypt";
// 微信登录方式(宠物主) // 微信登录方式(宠物主)
export function wxLogin(code) { export function wxLogin(code) {
...@@ -30,20 +32,21 @@ export function login(username, password, code, uuid) { ...@@ -30,20 +32,21 @@ export function login(username, password, code, uuid) {
code, code,
uuid uuid
} }
console.log('加密前数据', data)
return request({ return request({
'url': '/login', url: '/auth/login',
headers: { method: 'post',
isToken: false data: Qs.stringify({
}, sign: encrypt(data)
'method': 'post', }),
'data': data headers: {}
}) })
} }
// 获取用户详细信息 // 获取用户详细信息
export function getInfo() { export function getInfo() {
return request({ return request({
'url': '/getInfo', 'url': '/system/user/getInfo',
'method': 'get' 'method': 'get'
}) })
} }
...@@ -59,7 +62,7 @@ export function logout() { ...@@ -59,7 +62,7 @@ export function logout() {
// 获取验证码 // 获取验证码
export function getCodeImg() { export function getCodeImg() {
return request({ return request({
'url': '/captchaImage', 'url': '/captcha/captchaImage',
headers: { headers: {
isToken: false isToken: false
}, },
......
...@@ -13,5 +13,9 @@ ...@@ -13,5 +13,9 @@
"babel-eslint": "10.1.0", "babel-eslint": "10.1.0",
"eslint": "7.15.0", "eslint": "7.15.0",
"eslint-plugin-vue": "7.2.0" "eslint-plugin-vue": "7.2.0"
},
"dependencies": {
"jsencrypt": "^3.0.0-rc.1",
"qs": "^6.14.0"
} }
} }
...@@ -9,10 +9,27 @@ ...@@ -9,10 +9,27 @@
:src="defaultLogo" :src="defaultLogo"
/> />
</view> </view>
<view class="login-form-content">
<view class="input-item flex align-center">
<view class="iconfont icon-user icon"></view>
<input v-model="loginForm.username" class="input" type="text" placeholder="请输入账号" maxlength="30" />
</view>
<view class="input-item flex align-center">
<view class="iconfont icon-password icon"></view>
<input v-model="loginForm.password" type="password" class="input" placeholder="请输入密码" maxlength="20" />
</view>
<view class="input-item flex align-center" style="width: 60%;margin: 0px;" v-if="captchaEnabled">
<view class="iconfont icon-code icon"></view>
<input v-model="loginForm.code" type="number" class="input" placeholder="请输入验证码" maxlength="4" />
<view class="login-code">
<image :src="codeUrl" @click="getCode" class="login-code-img"></image>
</view>
</view>
</view>
<!-- 下方微信授权登录 --> <!-- 下方微信授权登录 -->
<view class="action-btn"> <view class="action-btn">
<!-- 协议勾选后获取手机号 --> <!-- 协议勾选后获取手机号 -->
<button class="now-style" open-type="getPhoneNumber" @getphonenumber="goIndexTemp($event)"> <button class="now-style" open-type="getPhoneNumber" @click="handleLogin()">
<text>点击登录</text> <text>点击登录</text>
</button> </button>
</view> </view>
...@@ -32,12 +49,12 @@ export default { ...@@ -32,12 +49,12 @@ export default {
return { return {
codeUrl: '', codeUrl: '',
loading: false, loading: false,
captchaEnabled: true, captchaEnabled: false,
globalConfig: getApp().globalData.config, globalConfig: getApp().globalData.config,
loginForm: { loginForm: {
username: 'admin', username: 'admin',
password: 'admin123', password: '123456',
code: '', code: undefined,
uuid: '' uuid: ''
}, },
// 登录勾选协议--默认不勾选 // 登录勾选协议--默认不勾选
...@@ -54,17 +71,17 @@ export default { ...@@ -54,17 +71,17 @@ export default {
} }
}, },
created() { created() {
// this.getCode() this.getCode()
// this.getLogo() // this.getLogo()
}, },
onLoad() { onLoad() {
console.log('微信登陆页面') console.log('微信登陆页面')
this.getWxCode() /*this.getWxCode()
this.$store.commit('SET_SHOW_CONFIRM', true) this.$store.commit('SET_SHOW_CONFIRM', true)
this.$store.commit('SET_LOGOUT_BTN', false) this.$store.commit('SET_LOGOUT_BTN', false)
setInterval(() => { setInterval(() => {
this.getWxCode() this.getWxCode()
}, 5 * 59 * 1000) // 5分钟的毫秒数 }, 5 * 59 * 1000) // 5分钟的毫秒数*/
}, },
methods: { methods: {
// 获取微信code码 // 获取微信code码
...@@ -155,7 +172,8 @@ export default { ...@@ -155,7 +172,8 @@ export default {
}, },
// todo 跳转首页 暂时使用 // todo 跳转首页 暂时使用
goIndexTemp() { goIndexTemp() {
const token = 'eyJhbGciOiJIUzI1NiJ9.eyJwaG9uZSI6bnVsbCwiZXhwIjoxNzQwOTg1Njg0LCJzdWIiOiJhZG1pbiIsImlhdCI6MTc0MDM4MDg4NCwid3hOaWNrbmFtZSI6bnVsbCwidXNlcm5hbWUiOiJhZG1pbiIsInVzZXJuYW1lOmFkbWluIjp7ImJ1c2luZXNzSWQiOiIxIiwidXNlcm5hbWUiOiJhZG1pbiIsInBhc3N3b3JkIjoiJDJhJDEwJG5zUEtLZklKRXpNbmlaS2M5WGFjZ09KczB1Tlp0ellhUGZBdTAxZXZsb2MvWDR3bDNpNDEuIiwiZGVwdElkIjoiNDAxIiwiZGVwdE5hbWUiOiLkuJzpo47mnKznlLDlj5HliqjmnLrmnInpmZDlhazlj7giLCJwaG9uZSI6bnVsbCwid3hOaWNrTmFtZSI6bnVsbCwicm9sZUlkcyI6IiIsInN0YWZmTGV2ZWwiOiIxIiwicHJvZHVjdGl2ZVJvbGVJZHMiOiIiLCJub25Qcm9kdWN0aXZlUm9sZUlkcyI6IiIsImlkbU5hbWUiOiLnrqHnkIblkZgiLCJub3RMb2NrZWQiOnRydWUsImF1dGhvcml0aWVzIjpudWxsLCJlbmFibGVkIjp0cnVlLCJhY2NvdW50Tm9uRXhwaXJlZCI6dHJ1ZSwiYWNjb3VudE5vbkxvY2tlZCI6dHJ1ZSwiY3JlZGVudGlhbHNOb25FeHBpcmVkIjp0cnVlfSwiYnVzaW5lc3NJZCI6IjEifQ.Ak9rM4W-ZqhUox4N4oc6AXOLyL2Z3gKlX1g3pQbx6hw' console.log('goIndexTemp')
const token = 'eyJhbGciOiJIUzI1NiJ9.eyJwaG9uZSI6bnVsbCwiZXhwIjoxNzQyNDMzNzc5LCJzdWIiOiJhZG1pbiIsImlhdCI6MTc0MTgyODk3OSwid3hOaWNrbmFtZSI6bnVsbCwidXNlcm5hbWUiOiJhZG1pbiIsInVzZXJuYW1lOmFkbWluIjp7ImJ1c2luZXNzSWQiOiIxIiwidXNlcm5hbWUiOiJhZG1pbiIsInBhc3N3b3JkIjoiJDJhJDEwJG5zUEtLZklKRXpNbmlaS2M5WGFjZ09KczB1Tlp0ellhUGZBdTAxZXZsb2MvWDR3bDNpNDEuIiwiZGVwdElkIjoiNDAxIiwiZGVwdE5hbWUiOiLkuJzpo47mnKznlLDlj5HliqjmnLrmnInpmZDlhazlj7giLCJwaG9uZSI6bnVsbCwid3hOaWNrTmFtZSI6bnVsbCwicm9sZUlkcyI6IjIiLCJzdGFmZkxldmVsIjoiMSIsInByb2R1Y3RpdmVSb2xlSWRzIjoiMiIsIm5vblByb2R1Y3RpdmVSb2xlSWRzIjoiIiwiaWRtTmFtZSI6IueuoeeQhuWRmCIsIm5vdExvY2tlZCI6dHJ1ZSwiYXV0aG9yaXRpZXMiOm51bGwsImVuYWJsZWQiOnRydWUsImFjY291bnROb25FeHBpcmVkIjp0cnVlLCJhY2NvdW50Tm9uTG9ja2VkIjp0cnVlLCJjcmVkZW50aWFsc05vbkV4cGlyZWQiOnRydWV9LCJidXNpbmVzc0lkIjoiMSJ9.Pa5SApOWxgmWPc_N0wQFrqHh-CBnQlpBZO_cUFT3S1I'
this.$store.dispatch('LoginPetOwner', token) this.$store.dispatch('LoginPetOwner', token)
this.$tab.reLaunch('/pages/index') this.$tab.reLaunch('/pages/index')
}, },
...@@ -186,11 +204,12 @@ export default { ...@@ -186,11 +204,12 @@ export default {
// 获取图形验证码 // 获取图形验证码
getCode() { getCode() {
getCodeImg().then(res => { getCodeImg().then(res => {
this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled this.loginForm.uuid = res.uuid
/*this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled
if (this.captchaEnabled) { if (this.captchaEnabled) {
this.codeUrl = 'data:image/gif;base64,' + res.img this.codeUrl = 'data:image/gif;base64,' + res.img
this.loginForm.uuid = res.uuid this.loginForm.uuid = res.uuid
} }*/
}) })
}, },
// 登录方法 // 登录方法
......
...@@ -100,7 +100,7 @@ ...@@ -100,7 +100,7 @@
/> />
</view> </view>
<view v-show="loadStatus === 'loading'" style="text-align: center"> <view v-show="loadStatus === 'loading'" style="text-align: center">
<image src="../../static/images/home/loading.gif" style="width: 50rpx;height: 60rpx;" /> <!-- <image src="../../static/images/home/loading.gif" style="width: 50rpx;height: 60rpx;" /> -->
</view> </view>
<!--顶部提示--> <!--顶部提示-->
......
...@@ -64,8 +64,8 @@ const user = { ...@@ -64,8 +64,8 @@ const user = {
const uuid = userInfo.uuid const uuid = userInfo.uuid
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
login(username, password, code, uuid).then(res => { login(username, password, code, uuid).then(res => {
setToken(res.token) setToken(res.data)
commit('SET_TOKEN', res.token) commit('SET_TOKEN', res.data)
resolve() resolve()
}).catch(error => { }).catch(error => {
reject(error) reject(error)
......
import JSEncrypt from 'jsencrypt/bin/jsencrypt'
// 密钥对生成 http://web.chacuo.net/netrsakeypair
const publicKey = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu6EsPHTuCzwyZ7D0/OhW\n' +
'QDQdB9tByC0vDnb7k7gmT0h77/mmJYcwvuqUdj+PXKO+V1NlJJqlf61UjcQkWD9o\n' +
'K6M1MHLHlS1qWXeXGaETClNUXAhdw2IkdBouXSHxyDkXYIDINYlOd91chxEBuBac\n' +
'igJI0c5p9BA62QcOKDUE2mDJL+LOd70NCYsJf3um1IAgfKDX8RH2H3aPxy/BJ8aS\n' +
'Edu+M9YDWsF6VFpaBr/WPPdouuPPjfs5203PCbvp0pvco+05JNDSiurEFcL+VDMm\n' +
'wFNKExmeCvn/zr+UIkRPWHwxfJq+/gw/lt+UzBO2NURhCv4pQZy19vdFLLLeMM09\n' +
'ewIDAQAB'
export function encrypt(data) {
const json = JSON.stringify(data)
const encryptor = new JSEncrypt()
encryptor.setPublicKey(publicKey)
return encryptor.encrypt(json)
}
export function decrypt(txt) {
const encryptor = new JSEncrypt()
encryptor.setPrivateKey('')
return encryptor.decrypt(txt)
}
const passwordPublicKey = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANL378k3RiZHWx5AfJqdH9xRNBmD9wGD\n' +
'2iRe41HdTNF8RUhNnHit5NpMNtGL0NPTSSpPjjI1kJfVorRvaQerUgkCAwEAAQ=='
const passwordPrivateKey = 'MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEA0vfvyTdGJkdbHkB8\n' +
'mp0f3FE0GYP3AYPaJF7jUd1M0XxFSE2ceK3k2kw20YvQ09NJKk+OMjWQl9WitG9p\n' +
'B6tSCQIDAQABAkA2SimBrWC2/wvauBuYqjCFwLvYiRYqZKThUS3MZlebXJiLB+Ue\n' +
'/gUifAAKIg1avttUZsHBHrop4qfJCwAI0+YRAiEA+W3NK/RaXtnRqmoUUkb59zsZ\n' +
'UBLpvZgQPfj1MhyHDz0CIQDYhsAhPJ3mgS64NbUZmGWuuNKp5coY2GIj/zYDMJp6\n' +
'vQIgUueLFXv/eZ1ekgz2Oi67MNCk5jeTF2BurZqNLR3MSmUCIFT3Q6uHMtsB9Eha\n' +
'4u7hS31tj1UWE+D+ADzp59MGnoftAiBeHT7gDMuqeJHPL4b+kC+gzV4FGTfhR9q3\n' +
'tTbklZkD2A=='
// 加密
export function passwordEncrypt(txt) {
const encryptor = new JSEncrypt()
encryptor.setPublicKey(passwordPublicKey) // 设置公钥
return encryptor.encrypt(txt) // 对需要加密的数据进行加密
}
// 解密
export function passwordDecrypt(txt) {
const encryptor = new JSEncrypt()
encryptor.setPrivateKey(passwordPrivateKey)
return encryptor.decrypt(txt)
}
...@@ -10,7 +10,12 @@ const baseUrl = config.baseUrl ...@@ -10,7 +10,12 @@ const baseUrl = config.baseUrl
const request = config => { const request = config => {
// 是否需要设置 token // 是否需要设置 token
const isToken = (config.headers || {}).isToken === false const isToken = (config.headers || {}).isToken === false
config.header = config.header || {} config.header = config.header || {
'Content-Type': 'application/x-www-form-urlencoded'
}
console.log('getToken',getToken())
console.log('isToken',isToken)
if (getToken() && !isToken) { if (getToken() && !isToken) {
config.header['Authorization'] = 'Bearer ' + getToken() config.header['Authorization'] = 'Bearer ' + getToken()
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment