目前项目用的是 vue+Element UI做的前端,现在碰到一个头疼的问题,请各位大神提供思路,不胜感激。
项目中某个页面3个部门都可以看到和维护,权限控制需求是某部门的人员,只能修改本部门范围内的数据,其他部门的数据只能查看。因为类似页面特别多,每个部门能维护的数据也非常多,所以一开始放弃了后端维护权限、前端使用后端权限信息的方式来控制。此种方式同时也会导致前端遍历的数据权限也很多,影响效率。
请问给位大神有什么好的思路来解决页面内N多个参数,并且参数划分了部门的权限控制。多谢多谢。
首先个人意见,你的定位就有点不正确,或者之前的人。前端是做的界面样式和各个页面之间的数据交互,最好的分工就是后台处理数据,前端拿到,尽量不做改变就能使用,不管是复杂的,还是简单的。后台少敲一行代码,前端就要遍历好几遍。真的是好几遍。这个时候就得说!!必须提出来!!你直接包揽下来没有任何好处!!
接下来是我的建议:
1、登录的时候response返回token+身份信息,两者存储在session,或者localstorage,或者cookie。
2、界面布局主要是v-if ,从上述存储地方取出身份,界面按照身份的操作权限,对各个功能进行判断,可以用compoted。最直接的就是v-if或者if语句 例如:
<template>
<div>
<button class="options" v-if="isJurisdiction">删除</button>
</div>
</template>
<script>
export default {
name:"Client",
data(){
return{
isJurisdiction:false
}
}
}
</script>
this.roleName = sessionStorage.getItem("roleName")
if(this.roleName == "系统管理员"||this.roleName == "一般管理员"){
this.isJurisdiction = true
}
那么我是存储在sessionStorage里面。所以只有管理员能看见删除按钮,其他人看不见,自然操作不了
3、此外,后台需要进行双重验证,前台的请求很容易改的,所以此id,或者此token,非法操作,或者前端逻辑判断错误,发送network请求之后,后台根据token信息判断此用户是否有权限进行此请求。返回401(无权限),或者 200
二、如果只有个别的两三个账户,所有人一起用的,那还有一个法儿
1、这几类人登录的时候,前端做个记录,
2、本地定个级别,存一下,或者跳转页面的时候传参也行,各个功能,各个数据直接按照这个级别走就完事儿了,后端也不用做处理,自己级别干自己级别的事儿