优化 代码 解决罗之 我的页面 不显示登录名问题

This commit is contained in:
java110 2022-03-31 16:07:34 +08:00
parent 03724416eb
commit 7197383a67
6 changed files with 90 additions and 31 deletions

View File

@ -29,6 +29,11 @@ import {
getLoginFlag
} from '../utils/StorageUtil.js'
import {
isNotNull,
isNull
} from '../utils/StringUtil.js'
import url from '../../../constant/url.js'
/**
@ -39,12 +44,17 @@ export function onLoad(options) {
pageOnLoad(options);
let pages = getCurrentPages() // 获取栈实例
let currentRoute = pages[pages.length - 1].route;
//白名单直接跳过检查登录
if (!url.NEED_NOT_LOGIN_PAGE.includes(currentRoute)) {
console.log('NEED_NOT_LOGIN_PAGE')
checkSession(null,function() {
})
let _key = options.key;
if (isNotNull(_key)) {
//根据key 去做登录
return ;
}
//白名单直接跳过检查登录
// if (!url.NEED_NOT_LOGIN_PAGE.includes(currentRoute)) {
// console.log('NEED_NOT_LOGIN_PAGE')
// checkSession(null,function() {
// })
// }
}
/**

View File

@ -14,8 +14,8 @@ import conf from '../../../config.js'
import url from '../../../constant/url.js'
export function pageOnLoad(options) {
getPageWAppId()
doPageCheckSession('',function(){},'1');
}
/**
@ -28,34 +28,33 @@ export function getPageWAppId() {
return wAppId;
}
export function pageCheckSession(_pageUrl,_call) {
export function doPageCheckSession(_pageUrl,_call,_needLogin){
let _that = this;
let loginFlag = getLoginFlag();
let nowDate = new Date();
if (loginFlag && loginFlag.expireTime > nowDate.getTime()) {
_call();
return;
}
//查询临时钥匙
let _key = getOwnerKey();;
if (_key) {
doLoginOwnerByKey(_key, _call);
doLoginOwnerByKey(_key, _call,_needLogin);
} else {
uni.navigateTo({
url: '/pages/showlogin/showlogin?wAppId=' + getWAppId()
});
return;
}
}
export function pageCheckSession(_pageUrl,_call) {
doPageCheckSession(_pageUrl,_call,'0')
}
/**
* app 自登陆处理
* @param {Object} _key 自登陆key
* add by wuxw QQ 928255095
*/
export function doLoginOwnerByKey(_key, callback = () => {}) {
export function doLoginOwnerByKey(_key, callback = () => {},_needLogin) {
requestNoAuth({
url: url.loginOwnerByKey,
method: 'post',
@ -64,7 +63,7 @@ export function doLoginOwnerByKey(_key, callback = () => {}) {
},
success: function(res) {
let _param = res.data;
if (_param.code != 0) {
if (_param.code != 0 && _needLogin != '1') {
uni.navigateTo({
url: '/pages/showlogin/showlogin?wAppId=' + getPageWAppId()
});

View File

@ -19,10 +19,18 @@ export function pageOnLoad(options) {
let _key = options.key;
if (isNotNull(_key)) {
//根据key 去做登录
doLoginOwnerByKey(_key, function(){});
doLoginOwnerByKey(_key, function(){
// 可能存在 页面初始化等一些问题 这里删除连接中的key 然后刷新页面
window.location.href = window.location.href.replace('key=','_keySuccess=')
});
}
getPageWAppId(options)
getPageWAppId(options);
if (isNull(_key)) {
doPageCheckSession(window.location.href,window.location.href,function(){});
}
}
/**
@ -81,14 +89,25 @@ export function getPageWAppId(options) {
* 页面 session
* @param {Object} _call 回调函数
*/
export function pageCheckSession(_pageUrl,_call) {
export function doPageCheckSession(errorUrl,_pageUrl,_call) {
let loginFlag = getLoginFlag();
let nowDate = new Date();
if (loginFlag && loginFlag.expireTime > nowDate.getTime()) {
_call();
return;
}
wechatRefreshToken('', 0, location.origin+'/#'+_pageUrl);
if(_pageUrl){
wechatRefreshToken(errorUrl, 0, location.origin+'/#'+_pageUrl);
}else{
wechatRefreshToken(errorUrl, 0, '');
}
}
/**
* 页面 session
* @param {Object} _call 回调函数
*/
export function pageCheckSession(_pageUrl,_call) {
doPageCheckSession('',_pageUrl,_call)
}
export function wechatRefreshToken(errorUrl, _login, _redirectUrl) {
@ -181,3 +200,5 @@ export function getPageLoginCode(options) {
resolve(code);
});
}

View File

@ -19,6 +19,7 @@ import {
export function pageOnLoad(options) {
getPageWAppId();
doPageCheckSession('',function(){},'1');
}
/**
@ -38,7 +39,7 @@ export function getPageWAppId() {
* 页面 session
* @param {Object} _call 回调函数
*/
export function pageCheckSession(_pageUrl,_call) {
export function doPageCheckSession(_pageUrl,_call,_needLogin) {
let loginFlag = getLoginFlag();
let nowDate = new Date();
if (loginFlag && loginFlag.expireTime > nowDate.getTime()) {
@ -51,26 +52,34 @@ export function pageCheckSession(_pageUrl,_call) {
// session_key 过期
fail: function() {
// session_key过期
doLogin(_call);
doLogin(_call,_needLogin);
}
});
} else {
// 无登录态
doLogin(_call);
doLogin(_call,_needLogin);
}
}
/**
* 页面 session
* @param {Object} _call 回调函数
*/
export function pageCheckSession(_pageUrl,_call) {
doPageCheckSession(_pageUrl,_call,'0')
}
/**
* 登录
*/
export function doLogin(callback = () => {}) {
export function doLogin(callback = () => {},_needLogin) {
wx.login({
success: function(loginRes) {
if (loginRes.code) {
// TODO
//请求服务后端登录
requsetHcServerToLogin(loginRes, callback);
requsetHcServerToLogin(loginRes, callback,_needLogin);
} else {
// 获取 code 失败
console.log('调用wx.login获取code失败');
@ -87,7 +96,7 @@ export function doLogin(callback = () => {}) {
* 尝试服务器登录
* 如果登录不成功 跳转登录页面
*/
export function requsetHcServerToLogin(loginRes, callback = () => {}) {
export function requsetHcServerToLogin(loginRes, callback = () => {},_needLogin) {
let defaultRawData =
'{"nickName":"","gender":1,"language":"","city":"","province":"","country":"","avatarUrl":""}'; // 请求服务端的登录接口
console.log('返回信息', loginRes);
@ -110,7 +119,7 @@ export function requsetHcServerToLogin(loginRes, callback = () => {}) {
},
success: function(res) {
if (res.statusCode == '401') {
if (res.statusCode == '401' && _needLogin != '1') {
let data = res.data;
saveOpenId(data.openId);
wx.reLaunch({
@ -124,9 +133,11 @@ export function requsetHcServerToLogin(loginRes, callback = () => {}) {
saveUserLoginInfo(res.userInfo.userId, res.token)
callback();
} else {
wx.reLaunch({
url: '/pages/showlogin/showlogin?wAppId=' + _appId
});
if( _needLogin != '1'){
wx.reLaunch({
url: '/pages/showlogin/showlogin?wAppId=' + _appId
});
}
return;
}
},

View File

@ -23,4 +23,22 @@ export function decodeUrl(_url){
_url = _url.replaceAll("**", "&"); //已经有?了
return _url;
}
}
export function getPageUrl(){
let pages = getCurrentPages()
let len = pages.length
let curParam = pages[len - 1].options //获取当前页面参数
let param = []
for (let key in curParam) { //获取key=value键值对格式数组
param.push(key + '=' + curParam[key])
}
let _url = '' //除去第一个参数拼接后面参数
param.forEach((item, i) => {
if (i != 0) { //拼接&符号,由于第一组前拼接的是?所有第一组需要单独处理
_url += '&' + item
}
})
let url = '/' + pages[len - 1].route + '?' + param[0] + _url //最终格式**/pages/index/index/?id=11&name='boyyang'&sex='man'**
return url;
}

View File

@ -110,7 +110,7 @@
components: {},
props: {},
onLoad: function(options) {
context.onLoad(options, () => {
this.vc.onLoad(options, () => {
this.refreshPageLoginInfo();
});
},