UniApp开发安卓以及H5实现页面级权限管理,避免用户浏览器直接输入url访问页面

这篇具有很好参考价值的文章主要介绍了UniApp开发安卓以及H5实现页面级权限管理,避免用户浏览器直接输入url访问页面。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:uni-app如何像vue-router中的beforeEach一样实现跳转拦截功能呢?

为此uniapp官方提供了专门的API方法 uni.addInterceptor

页面级权限管理

举个栗子

我们发现底部有四个菜单分别是:首页、分类、购物车、我的;按常理来说首页和分类是不需要登陆就能查看的。另外两个则需要先登陆才能查看没登录就默认跳转到登录页面。

实现思路:

步骤一:在根目录新建文件夹 utils>Storage.js (文件夹名字可随意)

uniapp禁止网页访问,uni-app,前端

步骤二:封装本地存储方法函数(直接复制即可 亲测有效)

//存储 key:键 data:值

export const setStorage = (key, data) => {

  return uni.setStorageSync(key,data,);

};

//获取

export const getStorage = (key) => {

  return uni.getStorageSync(key);

};

//删除

export const delStorage = (key) => {

  return uni.removeStorageSync(key);

};

步骤三:新建文件夹 router>index.js (这里文件名随意也可以放在utils里面)

uniapp禁止网页访问,uni-app,前端

步骤四:页面权限设置(建议复制到编辑器冲查看更加直观,亲测直接复制即可) 

//引入本地存储工具函数

import { getStorage, setStorage } from "../src/utils/Storage";

//引入 toast模态框提示 我这边就不提供了 没有就默认注释掉

// import { toast } from "../src/utils/tools";

//黑名单 (未登录不允许访问的页面 有多少配置多少)

const whiteList = [

  "/pages/mine/index",

  "/pages/site/site",

  "/pages/payment/payment",

  "/pages/ordermsg/ordermsg",

  "/pages/order/order",

];

//路由跳转的方法

const list = ["navigateTo", "redirectTo", "reLaunch", "switchTab"];

//工具函数 用来判断前往的页面是否在黑名单中以及本地是否有token

/*

逻辑 我传入路径判断在黑名单中是否能找到 只要能找到或本地没有token那么返回fasle即将进行页面跳转

*/

function hasPermission(url) {

  // 在白名单中或有token,直接跳转

  if (whiteList.indexOf(url) !== -1 || getStorage("TOKEN")) {

    return false;

  }

  return true;

}

/*

uni.addInterceptor 拦截器 第一个参数是触发的对象 第二个参数是配置项

利用循环监听所有的页面跳转方式

*/

list.forEach((item) => {

  uni.addInterceptor(item, {

    // 页面跳转前进行拦截, invoke根据返回值进行判断是否继续执行跳转

    invoke(e) {

      //坑 路径在黑名单和本地token不存在才能进行跳转不然就会死循环

      if (!hasPermission(e.url) && !getStorage("TOKEN")) {

        // 将用户的目标路径保存下来

        // 这样可以实现 用户登录之后,直接跳转到目标页面

        setStorage("URL", e.url);

        //下面就可以写自己的逻辑了

        console.log('此页面是权限页面,你还没登录,即将跳转到登录页面');

        // toast(

        //   {

        //     title: "未登录,即将跳转登录页面",

        //     endtime: 2000,

        //   },

        //   {

        //     tab: 2,

        //     url: "/pages/login/login",

        //   }

        // );

        return false;

      }

      return true;

    },

  });

});

步骤五:最后在mian.js里面引入(这样就完成了)

uniapp禁止网页访问,uni-app,前端

避免用户浏览器直接输入url访问页面

在我们开发H5中避免用户直接在浏览器访问url来访问未授权页面

实现思路很简单

步骤一:看上面页面级权限管理教程重复步骤一和二操作(就是封装本地存储方法我这边就不重复操作了)

uniapp禁止网页访问,uni-app,前端

 步骤二:进入到App.vue页面

uniapp禁止网页访问,uni-app,前端

步骤三:在onLaunch钩子中编写代码(总体来说和页面权限差不多,建议直接复制到编辑器查看更加直观 亲测有效 复制直接可以使用)

<script>

//引入步骤一封装好的工具函数

import { getStorage } from "./src/utils/Storage";

export default {

  onLaunch: function () {

    // 实现#ifndef APP-PLUS 来判断非app环境下才加载如下代码 因为App没有window对象 会报错

    /* #ifndef APP-PLUS */

    window.onhashchange = function () {

      //监听浏览器的hash值变化

      var newHash = window.location.hash; //获取hash值

      //黑名单 (未登录不允许访问的页面 有多少配置多少)

      //路由跳转的方法

      const whiteList = [

        "/pages/mine/index",

        "/pages/site/site",

        "/pages/payment/payment",

        "/pages/ordermsg/ordermsg",

        "/pages/order/order",

      ];

      //工具函数 用来判断前往的页面是否在黑名单中以及本地是否有token

      /*

       逻辑 我传入路径判断在黑名单中是否能找到 只要能找到或本地没有token那么返回fasle即将进行页面跳转

      */

      function hasPermission(url) {

        // 在白名单中或有token,直接跳转

     if (whiteList.indexOf(url) !== -1||getStorage("TOKEN")) {

          return false;

        }

        return true;

      }

      //如果是黑名单且没有登录就直接跳转到登录页面

      if (hasPermission(newHash)) {

        uni.navigateTo({

          url: "/pages/login/login",

        });

        return;

      }

      console.log("非权限页面");

    };

    /* #endif */

  },

};

</script>

<style lang="scss">

@import "uview-plus/index.scss";

/*  #ifdef H5  */

::v-deep .uni-tabbar {

  .uni-tabbar-border {

    background-color: #ffffff !important; // tabBar 上边框的颜色

  }

}

/*  #endif  */

</style>文章来源地址https://www.toymoban.com/news/detail-794347.html

到了这里,关于UniApp开发安卓以及H5实现页面级权限管理,避免用户浏览器直接输入url访问页面的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp 开发 APP 使用 web-view 引入H5 app与 h5 页面通信

    uniapp 可以同时兼容 APP 和 H5,但有时候有些功能在 APP 中实现不了而在 H5 中可以实现,就可以采用 web-view 的方式在 APP 模式下显示 H5 页面。但是 APP 和 H5 储存的参数是不能共享的,例如token,就涉及到 APP 与 H5 之间的参数传递。 H5 向 APP 传参:引入 webview.js ,调用 uni.postMes

    2024年02月13日
    浏览(37)
  • uniapp开发小程序H5页面顶部导航栏navigationBar如何隐藏?三种解决办法

    方法1:在pages.json 原生小程序也可以采用类似的方法去掉顶部,让头部变透明 小程序页面顶部导航栏navigationBar如何隐藏、变透明?_你挚爱的强哥的博客-CSDN博客 小程序顶部的白色背景条就不见了,直接变透明,只剩下右上角的胶囊按钮。 https://s-z-q.blog.csdn.net/article/details/13

    2024年02月13日
    浏览(42)
  • uniapp开发的h5如何跳转回uniapp开发的app或小程序以及getLocation授权

    最近有个需求,以前开发的uniapp代码,用于打包成app与小程序。目前需要将其部分功能以h5的方式嵌入到另一个原生开发的小程序中。且需要监听webview中src的变化 1.解决打包成h5后,跳转到微信小程序页面 a. 首先按照uniapp官方给定的h5模板,新建一个index.html在根目录下 b. 在

    2024年02月16日
    浏览(57)
  • uniapp实现将页面转换成pdf(小程序、app、h5)

    使用html2Canvas和jspdf 安装这两个 uniapp在小程序无法获取dom,app端可在renderjs中获取 dom,小程序需要使用web-view导入一个h5页面,实现转pdf H5和小程序 其中通过web-view导入到微信小程序的话,需要导入微信的sdk 在index.html中导入也不知道咋回事,有wx,但是wx.miniProgram是undefined 然

    2024年02月08日
    浏览(32)
  • uniapp实现微信小程序内嵌h5页面的相互跳转

    前期准备3个页面,小程序内2个,h5一个。 小程序内:操作页pageA,展示容纳h5的展示页PageWebview.vue。 h5:h5页面pageB,并且有可以访问的线上url。 【微信小程序pageA-内嵌h5页面pageB】 1.1 pageA实现点击跳转,将pageB的访问地址url拼接,并进入展示页PageWebview.vue 1.2 PageWebview.vue页面用

    2024年02月12日
    浏览(49)
  • 小程序进销存管理系统多用户多仓库,uniapp源码可生成H5页面和APP,前后端全开源

    小程序进销存管理系统多用户多仓库,uniapp源码可生成H5页面和APP,前后端全开源 功能 1、支持采购单录入、审核、入库、退货等采购过程中的记录追踪 2、支持销售、出库、销售审核、出库审核、退货等跟踪 3、支持产品出库、入库的数据导出 4、支持用户、仓库等管理 ID:

    2024年02月15日
    浏览(43)
  • uniapp 原生安卓开发插件(module),以及android环境本地调试(一)

    由于uniapp 框架的局限先,有很多功能不能如原生android开发使用顺畅,因此,需要使用插件进行辅助,再由uniapp引入插件,使得功能完善。废话不多说,直接上教程!觉得有用的麻烦点个赞吧! uniapp 项目(也就是你自己的项目) 下载 安装JDK (java的JDK)jdk1.8 下载 安装 andr

    2024年02月06日
    浏览(55)
  • 利用webview 内嵌实现小程序,h5 ,app 页面跳转和数据通讯,附带实现pdf文件的预览(兼容ios和安卓)

    承载网页的容器。会自动铺满整个小程序页面, 个人类型的小程序暂不支持使用。 客户端 6.7.2 版本开始,navigationStyle: custom 对 web-view 组件无效 相关的属性说明:开放能力 / web-view (qq.com) 2.bindmessage 可以实现网页端和小程序之间通讯, 但只在特定时机触发 网页端向小程序

    2024年02月02日
    浏览(61)
  • 项目笔记——安卓WebView加载H5页面问题处理

    项目为Android应用,使用WebView加载H5页面。 此文仅记录项目开发中遇到的问题及解决方法。 目录 一,下拉刷新 二,H5唤起支付宝 三,H5本地文件选择 四,加载图片失败 五,输入框被软键盘遮挡 页面Reload需要下拉刷新功能,所以使用了SwipeRefreshLayout包裹WebView。但使用时不管

    2024年02月02日
    浏览(37)
  • 【VUE学习】权限管理系统前端vue实现3-登陆页面

             path: \\\'/login\\\' :指定了路由的路径为 \\\"/login\\\",表示该路由匹配到的 URL 是 \\\"/login\\\"。 name: \\\'login\\\' :指定了路由的名称为 \\\"login\\\",可以在代码中通过名称来进行路由导航。 component: () = import(\\\'../views/Login.vue\\\') :指定了该路由对应的组件为一个异步加载的组件。 使用箭头函

    2024年02月13日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包