智销功能_权限判断和菜单读取

权限判断

咱们之前已经完成了角色与权限的配置,但是我们目前为止还没有进行过权限的判断,那接下来我们把权限的判断完成

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

FilterChainDefinitionMapBuilder:

public class FilterChainDefinitionMapBuilder {

    @Autowired
    private IPermissionService permissionService;

    public Map<String,String> createFilterChainDefinitionMap(){
       …
        filterChainDefinitionMap.put("/logout","logout"); //不登录也可以访问
        //从数据库拿到数据,放到咱们的Map
        //1.拿到所有权限
        List<Permission> permissions = permissionService.findAll();
        //2.遍历权限,拿到权限与资源
        for (Permission permission : permissions) {
            String url = permission.getUrl();//资源
            String sn = permission.getSn();//权限
            //把路径与资源放到拦截中去
            filterChainDefinitionMap.put(url,"perms["+sn+"]");
        }
        filterChainDefinitionMap.put("/**","authc");

        return  filterChainDefinitionMap;

    }
}

这时候,我们就可以发现,这个权限判断是从数据库中获取到的

这里建议大家先进行相应的测试(知道怎么测试对错对理解权限的知识非常重要)

 

1.2. 完成权限的判断

其它完成权限,就是通过当前登录用户拿到所有权限,然后去判断当前用户是否有咱们当前访问的这路径的权限!

1.2.1. 怎么拿到登录用户

之前咱们登录,是把用户放到shiro中进行管理,现在我们先把主体修改成Employee用户:

主体改成当前登录用户:

//完成登录的认证
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
    UsernamePasswordToken token = (UsernamePasswordToken)authenticationToken;
    String username = token.getUsername();
    Employee loginUser  = employeeService.findByUsername(username);
    if(loginUser==null){
        return null;
    }
    //拿到登录用户的密码
    String dbPassword = loginUser.getPassword();
    //设置加盐
    ByteSource salt = ByteSource.Util.bytes("itsource");
    SimpleAuthenticationInfo authorizationInfo = new SimpleAuthenticationInfo(loginUser,dbPassword,salt,getName());
    return authorizationInfo;
}

菜单读取

用户->角色->权限->菜单

 

1.Menu代码生成

 

2.domain自关联配置

 

需要配置双向,但是不能让JPA去管理一对多(我们自己管理:@Transient)

 

双向生成JSON会产生死循环,需要一边进行忽略:@JsonIgnore

 

 

 

3.MenuRepositoryService配置

 

 

 

转载于:https://www.cnblogs.com/yh9264426/p/10623058.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值