论坛首页 Java企业应用论坛

如何实现权限控制(求包养,征求解决方案)

浏览 7702 次
精华帖 (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个问题 不知道哪种方法比较好一点,希望大家拍砖。
   发表时间:2012-03-31  
用缓存是需要的,每次判断都去读取数据库,这种做法不太专业
0 请登录后投票
   发表时间:2012-04-01  
楼主你搜一下R B A C 模型吧。。 
JAVAEYE上权限的讲解一堆一堆的
粗看了一下, 你这么做,好像是在做毕业设计一样

把权限的划分本质上跟什么service, action没关系
那假如换个系统,架构里没有什么service这个包呢, 假如不用struts你找不到什么action呢

权限应该是独立的可配置的, 你换个系统一样不做修改或者少做修改就能重用的模块,除非是针对特定行业的业务系统。

搜了一个链接
http://www.iteye.com/topic/754014
一搜一大把

0 请登录后投票
   发表时间:2012-04-01  
集成 Apache Shiro , 做权限判断很方便:
快速了解看着里:
http://www.infoq.com/cn/articles/apache-shiro

官方网站:
http://shiro.apache.org/
0 请登录后投票
   发表时间:2012-04-01  
shiro+一个模板语言(vm,freemarker,jsp..)就基本可以了, SpringMVC也可以不过较shiro的确“复杂”一些
0 请登录后投票
   发表时间:2012-04-01  
角色权限数据绝对要放到缓存里面.  那个数据库也顶不住你这样访问的

apache shiro 这个你可以研究下 我现在正在研究中.. 确实不错 听说 spring 用的就是这个做的 安全框架
0 请登录后投票
   发表时间:2012-04-01  
    也许你可以这么做,一个全局的filter,
    然后一张权限表,表里有权限的url ,如果用struts的话是action.
    这样权限就可修改。也可以具体分配。

    你可以自行思考,一定要详细了解的话我再贴出相关内容
0 请登录后投票
   发表时间:2012-04-01  
m_lixn 写道
角色权限数据绝对要放到缓存里面.  那个数据库也顶不住你这样访问的

apache shiro 这个你可以研究下 我现在正在研究中.. 确实不错 听说 spring 用的就是这个做的 安全框架


源码提供的 spring-hibernate Demo 直接可以在项目中用.
0 请登录后投票
   发表时间:2012-04-01  
直接用SPIRNG的安全机制
0 请登录后投票
   发表时间:2012-04-01  
可以用过滤器  ,一张权限表 ,一张角色表,一张人员角色表,过滤器捕捉到请求的时候判断是否有权限操作
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics