首页 > 其他分享 >若依移动端开放非登陆可访问页面改造

若依移动端开放非登陆可访问页面改造

时间:2023-05-05 23:22:55浏览次数:30  
标签:const url whiteList 若依 访问 白名单 path 页面

若依移动端源码

https://gitee.com/y_project/RuoYi-App

 

一: 新应用场景通点:

写一个类似微博,需要一部份页面,未授权也可以访问,此应该必须要求登陆无法满足场景需求。

二: 源码分析析

一)白名单,支持未登陆查访问

源码位置:根目录下文件:permission.js(非utils文件夹内部的permission.js哦)

import { getToken } from '@/utils/auth'

// 登录页面
const loginPage = "/pages/login"
  
// 页面白名单
const whiteList = [
  '/pages/login', '/pages/common/webview/index'
]

// 检查地址白名单
function checkWhite(url) {
  const path = url.split('?')[0]
  return whiteList.indexOf(path) !== -1
}

// 页面跳转验证拦截器
let list = ["navigateTo", "redirectTo", "reLaunch", "switchTab"]
list.forEach(item => {
  uni.addInterceptor(item, {
    invoke(to) {
      if (getToken()) {
        if (to.url === loginPage) {
          uni.reLaunch({ url: "/" })
        }
        return true
      } else {
        if (checkWhite(to.url)) {
          return true
        }
        uni.reLaunch({ url: loginPage })
        return false
      }
    },
    fail(err) {
      console.log(err)
    }
  })
})

 对如上源码分析:

一)对判断白名单进行改造

// 页面白名单
const whiteList = [
  '/pages/login', '/pages/common/webview/index'
]

 

 上文源可以手动添中开放页面白名单,未登陆可以访问,但对于开类似微博多个页面未登陆也可以访问,多个页面添加实在不方便。
经过分析,如何源码判断是否在白名单决定放权
// 检查地址白名单
function checkWhite(url) {
  const path = url.split('?')[0]
  return whiteList.indexOf(path) !== -1
}

 

 对如上源码进行改造,通过对路径转换为字符串比较,决定开发符串字符串的路径为白名单。本例为"weblog"
// 检查地址白名单
function checkWhite(url) {
    const path = url.split('?')[0]
    console.log("url:", url, "path:", path);
    console.log("判断是否包括weblog:", whiteList.toString().indexOf('weblog'));
    //判断全路径是否包含weblog,不包含为-1,如果不是-1,即为白名单
    const isWeblog=whiteList.toString().indexOf('weblog');
    return (whiteList.indexOf(path) !== -1) || (isWeblog!==-1)
}

 二:App.vue

<script>
  import config from './config'
  import store from '@/store'
  import { getToken } from '@/utils/auth'

  export default {
    onLaunch: function() {
      this.initApp()
    },
    methods: {
      // 初始化应用
      initApp() {
        // 初始化应用配置
        this.initConfig()
        // 检查用户登录状态
        //#ifdef H5
        this.checkLogin()
        //#endif
      },
      initConfig() {
        this.globalData.config = config
      },
      checkLogin() {
        if (!getToken()) {
          this.$tab.reLaunch('/pages/login') 
        }
      }
    }
  }
</script>

<style lang="scss">
  @import '@/static/scss/index.scss'
</style>

 

 

 

标签:const,url,whiteList,若依,访问,白名单,path,页面
From: https://www.cnblogs.com/asplover/p/17375656.html

相关文章

  • Blazor中打开一个新页面的最好方法
    适用于BlazorWasm和BlazorSSR调用下面的js方法说一下为什么不用window.open,有可能被拦截是小问题,大问题是打开新页面未加载完时,回到原页面,大概率卡死,无法点击任何东西,只有f12之后才恢复回来。而用创建a标签就不会有这种问题。//创建超链接,不会被拦截functionopenBrowser......
  • 前端_页面取值、赋值
    1.Form1.cs中取值  1.1 文本框取值:text.Box1.Text.Trim()  Trim()作用,去掉字符串左右两端空格   1.2  给标签赋值:label2.Text="字符串"  1.3 给富文本框赋值: richTextBox1.Text=ex.Message; //显示异常的文本消息  ......
  • jQuery AJAX之异步访问和加载片段
    HTML文件<!DOCTYPEhtml><html><head><metacharset="utf-8"/><title></title><scriptsrc="../../Scripts/jquery-3.4.1.min.js"></script><scriptsrc="ajaxindex.js&......
  • nginx 发布网站通过域名访问,后端接口反向代理
    1、申请域名证书,申请好之后,下载Nginx域名部署包(包里一般会含义*.key和*.pem文件)2、把 *.key和*.pem文件放置到 Nginx程序 conf文件夹下,与nginx.conf文件路径保存一致3、修改Nginx的配置文件 server{    listen   443ssl;    #你的域......
  • el-select数据太多造成页面卡顿?el-select实现触底加载
    当我们使用el-select下拉框的时候,会遇到后端放回的数据太过庞大(成千上万条),导致页面渲染的时候造成卡顿现象。这时候我们可以利用触底加载方法减少资源的消耗,避免页面卡顿。思路:这时候我们可以利用vue的自定义指令,监听到他的下拉滚动事件,当滚动到最后时,(下拉宽高度+可滑动高度距离......
  • 页面引入css样式时,使用link和@import有什么区别
    css文件引入的方式有两种:1.HTML中使用link标签<linkrel="stylesheet"href="style.css/>2.css中使用@import@import"style.css"/*使用字符创*/@importurl("style.css")/*使用url地址*/link和@import区别link属于HTML标签,除了加载css外,还可以做很多其的他事,比......
  • .Net MAUI Blazor存储访问权限仅照片和视频,没有所有文件管理权限
    参考:https://blog.csdn.net/ansondroider/article/details/1266555131、首先把MinimumTargetAndroidFramework的最低版本号指定为30或30以上2、然后找到Platforms/Android/AndroidManifest.xml把文件管理的权限加上<uses-permissionandroid:name="android.permission.READ_EXT......
  • vue 实现页面跳转
    1、router-link跳转//直接写上跳转的地址<router-linkto="/detail/one"><spanclass="spanfour">link跳转</span></router-link>//添加参数<router-link:to="{path:'/detail/two',query:{id:1,name:......
  • jexcel_将excel数据导入到页面
    jexcel_将excel数据导入到页面    还需解决的课题:下载jszip.js和xlsx.js<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="有效代码_将excel数据导入到网页.aspx.cs"Inherits="Default2"%><!DOCTYPEhtml><htmlxmlns="......
  • 内网穿透工具介绍-外网访问电脑本地服务器
    最近在自己家里的台式机上部署了minigpt4大模型,因此想让其他朋友来尝试以下,所有需要内网穿透工具我们在做开发时,不想购买服务器,只想搭建我们本地的服务器,我们搭建的本地服务器只能供我们自己电脑的浏览器访问,或者处于同一个wifi下的手机访问,但是我们如果想让别人访问到我们......