后台权限管理方案

权限管理方案

展示效果:
权限管理页面,添加前端或后台路径,添加编辑权限
角色管理页面,在这添加编辑角色,给角色分配不同权限

1.注册v-auth指令 给要添加权限的按钮绑定 v-auth指令

//在vuex中从后台获取当前用户的所有权限
 @Action
    async getUserPermissionAction(accountId) {
        let params: PermissionListParams = {
            accountId
        }
        //穿当前用户的角色ID 获取当前角色的所有权限
        const userPermissionList = await getPermissionList(params)
        this.commitUserPermissionModule(userPermissionList);
    }
	
//把权限分为后台接口权限和前端路径权限
    @Mutation
    commitUserPermissionModule(permissionList): void {
        let api = {}, web = {};
        permissionList.list.map((v: { frontUrl: string | number; backstageUrl: string | number; }) => {
            if (v.frontUrl) {
                web[v.frontUrl] = v
            }
            if (v.backstageUrl) {
                api[v.backstageUrl] = v
            }
        })
        //后台接口权限
        this.apiPermissionList = api;
		//前端路径权限
        this.webPermissionList = web;
    }
    
//新建permission.ts文件 
import type { App, Directive, DirectiveBinding } from 'vue';
import { permissionStore } from '/@/store/modules/permission';
import { userStore } from '/@/store/modules/user';
import { getAllApiUrl } from '/@/utils/common-method'

function isAuth(el: Element, binding: any) {
    //apiList 所有后台接口路径
  const value = binding.value, apiList: string[] = getAllApiUrl();

    //超级管理员 不检查权限 拥有所有权限
  if (!value || userStore.getUserInfoState['username'] === '超级管理员') {
    return
  };
  if (apiList.includes(value)) {
    //匹配上了证明是后端接口URL  permissionStore.getApiPermissionListState中有(value)传入的路径 就是有这个权限 没有的话el.parentNode?.removeChild(el);删除这个dom元素 页面不显示这个按钮
    if (!permissionStore.getApiPermissionListState[`/${value}`]) {
      el.parentNode?.removeChild(el);
    }
  } else {
    //否则是前端页面URL permissionStore.getWebPermissionListState中有(value)传入的路径 就是有这个权限 没有的话el.parentNode?.removeChild(el); 不显示进入这个页面的入口
    if (!permissionStore.getWebPermissionListState[value]) {
      el.parentNode?.removeChild(el);
    }
  }
}

const mounted = (el: Element, binding: DirectiveBinding<any>) => {
  isAuth(el, binding);
};

const authDirective: Directive = {
  mounted,
};
//  注册v-auth指令
export function setupPermissionDirective(app: App) {
  app.directive('auth', authDirective);
}
//main.ts引入
(async () => {
  const app = createApp(App);
  setupGlobalDirectives(app);
  app.mount('#app');
})();

//新建角色管理页面 多选框,提交给后台当前角色有哪些权限,新建用户时给用户分配角色


//页面中使用
<button v-auth="order/delete">删除</button>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java后台权限管理是指在Java后端开发中,对用户的权限进行管理和控制的一种机制。通过对用户的身份认证和权限验证,可以限制用户对系统中各个模块和功能的访问和操作权限。 在Java后台权限管理中,通常会使用注解、登录功能和前台传递参数等方式来实现权限管理。 其中,通过注解实现权限管理的方式是在代码中使用注解来标记需要进行权限验证的方法或类。通过在代码中添加相应的注解,可以在方法执行前进行权限验证,判断用户是否具有执行该方法的权限。如果用户没有权限,则可以抛出异常或返回相应的错误信息,限制用户的操作。 另外,登录功能也是实现权限管理的重要一环。在登录功能中,通常会对用户输入的用户名和密码进行验证,并将用户的身份信息保存在会话中。在后续的操作中,可以通过会话中的用户信息来判断用户是否具有相应的权限。 此外,还可以通过前台传递参数的方式来实现权限管理。在前台页面中,可以将用户的权限信息作为参数传递给后台,在后台进行权限验证。通过判断用户的权限是否包含所需权限,可以限制用户对相应模块和功能的操作。 综上所述,Java后台权限管理是通过注解、登录功能和前台传递参数等方式来对用户的权限进行管理和控制的一种机制。通过对用户的身份认证和权限验证,可以限制用户对系统中各个模块和功能的访问和操作权限。 #### 引用[.reference_title] - *1* *3* [SpringAOP+自定义注解模拟shiro框架实现](https://blog.csdn.net/chunsuo2480/article/details/100762707)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [JAVA后端登录权限控制](https://blog.csdn.net/m0_70547268/article/details/129670956)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值