hasPermission
时间: 2023-08-23 12:17:32 浏览: 46
hasPermission是一个Apache Shiro框架中的标签,用于在展示JSP页面时进行权限控制。当遇到<shiro:hasPermission name="sys:user:edit">标签时,Shiro会调用realm获取数据库中的权限信息,判断是否存在sys:user:edit权限。如果存在,就授权通过,允许访问;如果不存在,就拒绝访问。
相关问题
shiro:hasPermission
shiro:hasPermission是Apache Shiro框架中的一个标签,用于在JSP页面中进行权限控制。[1]当展示一个JSP页面时,如果遇到shiro:hasPermission标签,Shiro会调用Realm获取数据库中的权限信息,然后判断该权限是否在权限数据中存在。如果权限存在,则授权通过,允许用户访问相应的内容;如果权限不存在,则拒绝用户访问。[2]
关于权限标识的名字,一般情况下不是乱取的。通常,权限标识的名字是根据实际业务需求和系统设计来定义的,用于标识不同的权限操作。在使用shiro:hasPermission标签时,需要确保该权限标识的名字在权限数据中存在,才能执行相应的操作。[3]具体的判断逻辑由Shiro框架内部实现,开发者无需手动判断权限标识的存在与否。
总结来说,shiro:hasPermission标签用于在JSP页面中进行权限控制,通过判断权限标识的名字是否在权限数据中存在来决定是否授权通过。
v-hasPermission
v-hasPermission是一个自定义权限指令,用于在Vue3后台项目中判断某个角色是否拥有显示某个组件的权限。该指令是通过使用自定义指令来实现的,并且需要在Vue的install函数中进行注册。
具体实现如下:
```javascript
// main.js
import { createApp } from 'vue'
import App from './App.vue'
import permissionDirective from './directives/permission'
const app = createApp(App)
app.directive('hasPermission', permissionDirective)
app.mount('#app')
```
```javascript
// directives/permission.js
export default {
mounted(el, binding) {
// 判断是否拥有权限,且判断传入的数据类型是否符合预期
hasPermission(el, binding.value)
}
}
function hasPermission(el, value) {
// 判断传入的数据是否符合预期
if (!Array.isArray(value)) {
throw new Error('需要传入正确的数据类型')
}
// 判断是否拥有权限
let data = store.state.ruleNames // 存储着是否拥有该请求权限的数组
// 如果在data中包含了传入的数据字段,则代表拥有权限,没有则返回 -1,此时如果为false,则代表没有权限
let hasAuth = value.findIndex(v => data.includes(v)) !== -1
// 当使用的自定义指令dom存在时,且没有权限
if (el && !hasAuth) {
// 移除组件
el.parentNode.removeChild(el)
}
}
```