帖子
帖子
用户
博客
课程
显示全部楼层
6
帖子
0
勋章
27
Y币

关于用户登录的判断

[复制链接]
发表于 2019-3-7 14:13:49
小弟刚学apicloud很多不懂 查了一下判断登录 有个是在config下配置 不登录不给看 于是我封装了一个request 让每次请求前都判断localstorage是否存在用户信息
  1. /**封装:
  2. * 调用出自定义显示图标、内容和显示时间
  3. * @param {*} url 标题 提示信息
  4. * @param {*} method 提示时间 毫秒为单位
  5. * @param {*} data 数据
  6. * @param {*} showProgress 是否显示进度条
  7. * @param {*} checkLogin 是否检查登录状态
  8. * @param {*} submissionMode 设置参数提交方式
  9. * @return{*} 回调函数 返回的是res
  10. */
  11. function request(param,callback) {
  12.   //设置默认值 es5中无法在参数中写默认值
  13.   param.method == null ? param.method = 'post' : undefined
  14.   param.data == null ? param.data = '' : undefined
  15.   param.showProgress == null ? param.showProgress = false : undefined
  16.   param.checkLogin == null ? param.checkLogin = true : undefined
  17.   param.submissionMode == null ? param.submissionMode = "values" : undefined //参数提交方式
  18.   //是否显示进度条
  19.   if(param.showProgress){
  20.     api.showProgress({
  21.         style: 'default',
  22.         animationType: 'fade',
  23.         title: '努力加载中...',
  24.         text: '先喝杯茶...',
  25.         modal: false
  26.     });
  27.   }
  28.   //是否认证登录状态
  29.   if(param.checkLogin){
  30.       if($api.getStorage('Userphone') == null){
  31.         customToast(['你还没有登录呢~'], 1000, 'icon-cuowu');
  32.         setTimeout(function() {
  33.             api.openWin({
  34.                 name: 'login', //注册
  35.                 url: 'widget://html/login.html ',//绝对路径
  36.                 pageParam: {
  37.                     name: 'test',
  38.                 }
  39.             });
  40.         }, 1000);
  41.         return
  42.       }
  43.   }
  44.   //判断提交方式
  45.   switch (param.submissionMode) {
  46.     case '':
  47.       param.data = ''
  48.       break;
  49.     case 'values':
  50.       param.data = {
  51.         'values':param.data
  52.       }
  53.       break;
  54.     case 'files':
  55.       param.data = {
  56.         'files':param.data
  57.       }
  58.       break;
  59.     case 'body':
  60.       param.data = {
  61.         'body':param.data
  62.       }
  63.       break;
  64.     case 'stream':
  65.       param.data = {
  66.         'stream':param.data
  67.       }
  68.   }
  69.   // {
  70.   //   stream:"",  //以二进制流的方式提交文件。stream为文件路径(字符串类型),支持绝对路径,以及fs://、cache://、box://等文件路径协议。可直接使用其他端API返回的结果,如api.getPicture回调的ret.data等
  71.   //   body:"",    //以纯文本的方式提交数据,body支持字符串及JSON对象。提交JSON对象时,需设置application/json类型的Content-Type头
  72.   //   values:{},  //以表单方式提交参数(JSON对象), 如 {"field1": "value1", "field1": "value2"} (直接传JSON对像.)
  73.   //   files:{}    //以表单方式提交文件,支持多文件上传(JSON对象),如 {"file": "path"},也支持同一字段对应多文件:{"file":["path1","path2"]}。文件路径,支持绝对路径,以及fs://、cache://、box://等文件路径协议。可直接使用其他端API返回的结果,如api.getPicture回调的ret.data等.
  74.   // }
  75.   try {
  76.     api.ajax({
  77.       url:param.url,
  78.       method: param.method,
  79.       "cache": true,
  80.       "timeout": 10,
  81.       "headers": {
  82.           "X-APICloud-AppId": "XXXX",
  83.           "X-APICloud-AppKey": "xxxx"
  84.       },
  85.       "data": param.data
  86.     },function(ret, err){
  87.         if (ret) {
  88.             //console.log(JSON.stringify(ret))
  89.             api.hideProgress();
  90.             return callback(ret)
  91.         }else{
  92.           api.hideProgress();
  93.           customToast(['未找到数据'], 2000, 'icon-cuowu');
  94.           return callback({msg:false})
  95.         }
  96.     })
  97.   } catch (err){
  98.       customToast(['捕获未知错误'], 2000, 'icon-cuowu');
  99.   }
  100. }
复制代码


175
帖子
1
勋章
5678
Y币
感谢分享
37
帖子
2
勋章
3711
Y币
感谢分享
您需要登录后才可以回帖 登录

本版积分规则