Shiro_项目_权限判断&菜单配置

本文详细介绍了使用Shiro进行权限判断的步骤,包括获取所有权限进行判断,重写权限拦截器,配置自定义拦截器以及在MyRealm中进行权限判断。此外,还阐述了如何设计和实现菜单操作,包括domain层的设计,如menu类和Permission类的配置,以及通过MenuRepository和MenuServiceImpl完成菜单显示功能,并在Controller层进行控制。最后,讨论了页面按钮的权限控制,确保只有拥有相应权限的用户才能看到按钮。
摘要由CSDN通过智能技术生成

1 权限判断

1.1 获取到所有的权限进行判断

//这个值之后从数据库中查询到【用户-角色-权限-资源】
//map.put("/s/permission.jsp","perms[user:*]");
List<Permission> permissions = permissionService.findAll();
for (Permission permission : permissions) {
   
    String url = permission.getUrl();
    String sn = permission.getSn();
    map.put(url, "yxbPerms["+sn+"]");
}

1.2 重写权限拦截器

在这里插入图片描述
重写shiro 的权限拦截器 PermissionsAuthorizationFilter
写一个类去继承PermissionsAuthorizationFilter

public class ItsourceYxbPermissionsAuthorizationFilter extends PermissionsAuthorizationFilter {
   
    @Override
    protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws IOException {
   
        Subject subject = this.getSubject(request, response);
        if (subject.getPrincipal() == null) {
   
            //没有登录成功后的操作
            this.saveRequestAndRedirectToLogin(request, response);
        } else {
   
            //登录成功后没有权限的操作
            //1.转成http的请求与响应操作
            HttpServletRequest httpRequest = (HttpServletRequest) request;
            HttpServletResponse httpResponse = (HttpServletResponse) response;
            //2.根据请求确定是什么请求
            String xRequestedWith = httpRequest.getHeader("X-Requested-With");
            if (xRequestedWith !
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值