千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:青岛千锋IT培训  >  技术干货  >  如何进行权限控制?

如何进行权限控制?

来源:千锋教育
发布人:qyf
时间: 2023-02-21 17:17:36

如何进行权限控制

  权限分为页面级别和按钮级别。

  页面级别指的是,如果没有权限就无法访问整个页面,所以就要从菜单、路由守卫等方面下手。

  从菜单方面,要根据权限来渲染菜单,路由方面呢,要通过路由守卫阻止用户访问无权限访问的页面。

  按钮级别的权限,指的是页面中某些模块也依靠权限来进行控制,尤其是某些操作的按钮,这些往往又和角色相关,也就是说,在各大组件中,往往要依靠用户的角色来判断是否要对某些功能模块甚至某些按钮做特殊处理。

  此时,我们发现根据数据来对功能模块组件或者dom进行操作的逻辑是可以复用的,那么在vue中我们就可以将这段逻辑封装成一个自定义指令,然后通过给对应的组件、dom绑定指令来实现逻辑的快速复用。

  app.directive('authority', (el, binding) => { // mounted 和 updated的时候执行

  const { arg } = binding

  const { superadmin } = binding.modifiers

  const { role, adminname } = store.state.authority

  if (adminname !== 'admin' && superadmin && role !== 2) {

  switch (arg) {

  case 'remove':

  el.remove()

  break;

  case 'disabled':

  el.disabled = true

  el.className += ' is-disabled '

  break;

  default:

  break;

  }

  }

  }

  <el-button v-authority:disabled.superadmin >查看</el-button>
  <el-button v-authority:remove.superadmin >查看</el-button>

  在React中我们可以通过封装一个Authority组件来进行权限的控制

  import { connect } from 'react-redux'

  import React from 'react'

  // children 是要通过权限控制的元素, 可能是按钮也可能是其他组件

  // mode为操控模式, remove代表不渲染, disabled代表设置disabled属性

  // judge为自定义控制判断逻辑, 默认是判断role是否大于1

  const Authority = (props) => {

  const {

  children, role, mode = 'remove', judge = (r) => (r > 1),

  } = props

  if (mode === 'remove') return judge(role) ? children : null

  if (mode === 'disabled') {

  const item = React.cloneElement(children, { disabled: !judge(role) })

  return item

  }

  return children

  }

  

  export default connect((state) => state.authority)(Authority)

  role > 1}>

  <Authority mode="disabled" judge={(role) => role > 1}>
    <Button type="link" onClick={() => handleCheck(record.proid)}>查看</Button>
  </Authority>

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

清除浮动是怎么回事?

2023-02-21

客户端向服务器发送请求的过程

2023-02-21

什么是宽高自适应呢?

2023-02-21

最新文章NEW

Java项目中到底该怎么使用线程池?

2023-02-21

Oozie和Azkaban的区别

2023-02-21

如何进行权限控制?

2023-02-21

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>