欢迎来到天天文库
浏览记录
ID:8828461
大小:265.58 KB
页数:41页
时间:2018-04-08
《在项目中集成shiro权限框架》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、在项目中集成shiro权限框架(1) Shiro是一个功能强大的轻量级权限框架,相对其它权限框架(比如spring security)来说,要易用得很,下面,我给大家讲讲如何在一个项目中简单整合shiro。我们通常所说的权限,就是要判断某个操作者是否有操作某个资源的权限,而资源,可以是菜单、链接、功能按钮、业务方法、某类型的数据等等,根据需求,每个项目的权限可能都有所不同,通用万能权限系统是不存在的。 Shrio的权限包括认证、授权、密码管理、会话管理等四个部分,每一个部分,shrio都进行了抽象,以做到和具体应用平台、环境的无关。关于shiro的基础了解,大家可到这里去
2、看看:http://www.infoq.com/cn/articles/apache-shiro权限系统的设计,根据不同的权限粒度,会用所不同,比如:有的系统到菜单级,而有的到每一个功能按钮级,有的到方法级,有的到业务数据级,我在这仅仅讨论前两类。 上面是一个对象关系图,模块在此处仅仅为菜单进行逻辑归类,当然,也可以建立菜单和功能的一对多关系,为功能进行逻辑归类。当然,菜单也可以建成关联的树状结构,以更好扩展。 根据对象关系,可以设计出表结构,我直接贴出数据截图:模块表:菜单表: 操作表,一般对应页面中的按钮,其中f_action_flag对应于restful中的增、删、
3、查、改: 角色表: 角色-菜单关系表: 角色-功能表: 用户表: 用户-角色关系表: 上面截图中,真正有效的表7张,权限控制到页面及功能上。下篇,贴出上面的类代码及class映射文件。在项目中集成shiro权限框架(2)基础代码贴上:对象如下:/** * 用户对象 * * @authorLjh * */public classUser implementsSerializable { // 学生编码(由系统自动生成) privateLong id; // 姓名 @NotEmpty(message = "姓名不可以为空!") @Leng
4、th(min = 2, max = 5) privateString name; // 出生日期 @NotNull(message = "生日不能为空") @Past(message = "生日输入不正确,请核对!") privateDate birthday; // 登录密码 privateString password= "111"; // 用户角色集合字符 privateSet roles= newHashSet(); /** * 得到该用户可访问的模块,模块中
5、的菜单将实例化 * @return */ publicList getModels() { List models = newArrayList(); for(Iterator its = this.getMenus().iterator(); its.hasNext();){ Menu m = its.next(); if(!models.contains(m.getModel())) { Model m
6、odel = newModel(); model.setId(m.getModel().getId()); model.setDisplayOrder(m.getDisplayOrder()); model.setModelName(m.getModel().getModelName()); model.getMenus().add(m); models.add(model); } else{ fo
7、r(Model model : models) { if(model.getId() == m.getModel().getId()) { model.getMenus().add(m); break; } } } } Collections.sort(models); returnmodels;
此文档下载收益归作者所有