美文网首页
【黑马程序员济南校区】权限控制方式讲解

【黑马程序员济南校区】权限控制方式讲解

作者: keaiai | 来源:发表于2018-04-06 13:41 被阅读0次

 【济南校区】权限控制方式讲解

权限控制两种主要的方式:细粒度方法级别的权限控制、粗粒度URL级别权限控制

1.1细粒度方法级别的权限控制

原理:在业务处理方法上添加自定义注解,运行时创建目标对象的代理对象,在代理方法中使用反射技术读取注解的信息,获取需要的权限,并查询当前用户是否有相应的权限。

1.2、方法上使用的注解:

@RequiresRole(“”)// 表示访问当前方法需要哪些角色,等同于subject.hasRole()或者subject.hasAllRoles

@RequiresPermissions(“”)//表示访问当前方法需要哪些权限,等同于subject.isPermitted()或者subject.isPermittedAll

@RequiresAuthentication //验证用户是否登录,等同于subject.isAuthenticated();

@RequiresUser //验证用户是否已登录或者已记忆,等同于subject.isAuthenticated();或者subject.isRemembered();

@RequiresGuest //验证是否是一个guest请求,与@RequiresUser完全相反,即 @RequiresGuest== ! @RequiresUser

1.3、开启注解:

1.4、对于新增快递员的权限控制

@RequiresPermissions("corier_add")

public void save(Couriser couriser){couris}

5、测试发现权限控制没有生效

原因:收到@Transactional注解的影响,权限代理设置为JDK代理时,会针对接口代理,但是父类、父接口中找不到@RequiresPermissions 注解

我们的解决办法就是把代理的方式设置成cglib

2.粗粒度URL级别权限控制

通过Filter判断当前是否具有权限对应的URL地址,如果对应权限列表中没有当前访问的URL,权限不足,如果对应的权限列表中有这个URL代表允许访问。

在数据库中,存放用户、权限、访问URL之间的关系,如果用户访问一个URL地址,查询数据库判断用户当前具有权限,是否包含URL,如果包含则允许访问,如果不包含,权限不足。

我们通常使用的方式是第二种,粗粒度的URL级别的权限控制。

【黑马程序员济南】小鲁哥哥全学科技术整合帖(一贴在手!天下我有!)

如果你想了解更多黑马课程,如果你想加入黑马这个大家庭学习先进技术,光交天下好友,那就快来吧!

     黑马程序员济南中心联系电话:0531-55696830

相关文章

网友评论

      本文标题:【黑马程序员济南校区】权限控制方式讲解

      本文链接:https://www.haomeiwen.com/subject/ilqshftx.html