锁定老帖子 主题:如何实现权限控制(求包养,征求解决方案)
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-03-30
最后修改:2012-03-30
1, 前台展示群组文章 2, 后台管理群组文章(只有管理员可以访问,管理员有多个) 我目前有2种思路: 思路1:(在service层做权限判断) 提供一个service接口:queryGroupArticle(String gid,String userId)throws Exception 2中实现 前台展示实现: public List<Article> queryGroupArticle(String gid,String userId) throws Exception { List<Article> articleList = articleDao.queryArticle(gid); If(null==articleList){ Throw new Exception(“访问的地群组文章不存在”); } } 后台管理实现: public List<Article> queryGroupArticle(String gid,String userId){ List<String> adminList = userDao.queryAdmin(gid); //做权限校验 If(adminList .contains(userId)){ Return articleDao.queryArticle(gid); }else{ Throw new Exception(“你无权限进行此操作”); } } 思路2:(在action中做权限校验) 那么查询文章的接口就只要提供为queryGroupArticle(String gid)throws Exception 不需要传userId 而且只需提供一种实现 public List<Article> queryGroupArticle(String gid,String userId) throws Exception { List<Article> articleList = articleDao.queryArticle(gid); If(null==articleList){ Throw new Exception(“访问的地群组文章不存在”); } } 但是在action中要去做权限判断。 Boolean CheckPermissions(String userId){ //TODO调用后台业务接口校验用户权限 } 如果是请求前端的文章查询接口就无需做此权限校验 只是在action中要做一些业务判断。 我还有一个问题就是做权限校验的时候,每次都去请求数据库查询该群组的管理员,然后判断当前用户是否是管理员,还是将群组的管理员放到缓存中,如果数据量过大放缓存行吗? 以上2个问题 不知道哪种方法比较好一点,希望大家拍砖。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-03-31
用缓存是需要的,每次判断都去读取数据库,这种做法不太专业
|
|
返回顶楼 | |
发表时间:2012-04-01
楼主你搜一下R B A C 模型吧。。
JAVAEYE上权限的讲解一堆一堆的 粗看了一下, 你这么做,好像是在做毕业设计一样 把权限的划分本质上跟什么service, action没关系 那假如换个系统,架构里没有什么service这个包呢, 假如不用struts你找不到什么action呢 权限应该是独立的可配置的, 你换个系统一样不做修改或者少做修改就能重用的模块,除非是针对特定行业的业务系统。 搜了一个链接 http://www.iteye.com/topic/754014 一搜一大把 |
|
返回顶楼 | |
发表时间:2012-04-01
集成 Apache Shiro , 做权限判断很方便:
快速了解看着里: http://www.infoq.com/cn/articles/apache-shiro 官方网站: http://shiro.apache.org/ |
|
返回顶楼 | |
发表时间:2012-04-01
shiro+一个模板语言(vm,freemarker,jsp..)就基本可以了, SpringMVC也可以不过较shiro的确“复杂”一些
|
|
返回顶楼 | |
发表时间:2012-04-01
角色权限数据绝对要放到缓存里面. 那个数据库也顶不住你这样访问的
apache shiro 这个你可以研究下 我现在正在研究中.. 确实不错 听说 spring 用的就是这个做的 安全框架 |
|
返回顶楼 | |
发表时间:2012-04-01
也许你可以这么做,一个全局的filter,
然后一张权限表,表里有权限的url ,如果用struts的话是action. 这样权限就可修改。也可以具体分配。 你可以自行思考,一定要详细了解的话我再贴出相关内容 |
|
返回顶楼 | |
发表时间:2012-04-01
m_lixn 写道 角色权限数据绝对要放到缓存里面. 那个数据库也顶不住你这样访问的
apache shiro 这个你可以研究下 我现在正在研究中.. 确实不错 听说 spring 用的就是这个做的 安全框架 源码提供的 spring-hibernate Demo 直接可以在项目中用. |
|
返回顶楼 | |
发表时间:2012-04-01
直接用SPIRNG的安全机制
|
|
返回顶楼 | |
发表时间:2012-04-01
可以用过滤器 ,一张权限表 ,一张角色表,一张人员角色表,过滤器捕捉到请求的时候判断是否有权限操作
|
|
返回顶楼 | |