软件世界网 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
移动开发 架构设计 编程语言 Web前端 互联网
开发杂谈 系统运维 研发管理 数据库 云计算 Android开发资料
  软件世界网 -> 编程语言 -> ShiroAnnotation保护实例 -> 正文阅读
编程语言 最新文章
Java面试题(1)
ReactiveX序列——RxSwift
C++STL之ACM相关知识大全
c++中vector向量几种情况的总结(向量指针,
SSH框架整合demo
JAX
UVA
curl备忘(1)
C#机房重构——万事开头难(二)
OJ刷题

[编程语言]ShiroAnnotation保护实例

  2015-08-23 13:07:53

之前介绍了Shiro的Web访问控制和缓存配置,其实Shiro和Spring一样可以使用Annotation来配置方法级别的安全,省去自己每次获取Subject去做权限验证,比如在修改用户密码的时候只能是用户本人,在修改用户用户帐号的状态(lock/unlock)只有管理员可以,这些操作都需要方法级别的安全保护。
如果要自己获取当前的登录User信息,可以通过Shiro的SecurityUtils来实现,然后对User的权限做判断:
private User getCurrentUser(){
        Subject currentUser = SecurityUtils.getSubject();
        return userManager.getUserByName((String) currentUser.getPrincipal());
    }

如果使用Annotation,这些东西都是由Shiro来帮你实现了,你只要在业务方法上面加上相应的权限管理,一般来说使用的是都是每个对象的读写的权限,如果简单系统,可以把User对应的Role当成权限管理对象。给个简单例子:
 @Override
    @RequiresRoles("ROLE_ADMIN")
    public Show save(Show show){
       if(null != show.getId()){
            //due to create/update time is not passed back from page
            Show oldShow = findById(show.getId());
            if(null == oldShow){
                return null;
            }
            List<String> oldFilelist = LYTZUtils.getFilePathFromContent(oldShow.getContent());
            if(LOG.isDebugEnabled()){
                LOG.debug("the old content contains " + oldFilelist.size() + " images in image server");
            }
            show = super.save(show);
            List<String> newFilelist = LYTZUtils.getFilePathFromContent(show.getContent());
            for(String filePath : oldFilelist){
                if(!newFilelist.contains(filePath) && fileService.isFileExists(filePath)){
                    if(LOG.isDebugEnabled()){
                        LOG.debug("unusedFile: " + filePath);
                    }
                    fileService.removeFile(filePath);
                }
            }

            return show;
        } else {
            return super.save(show);
        }
    }

Shiro提供的annotation包括了基本验证:@RequiresAuthentication,@RequiresUser,@RequiresGuest ,角色验证:@RequiresRoles(value={“ROLE_VIP”, “ROLE_USER”}, logical= Logical.AND) ,@RequiresPermissions (value={“read”, “write”}, logical= Logical.OR)
版权声明:本文为博主原创文章,未经博主允许不得转载。
上一篇文章      下一篇文章      查看所有文章
2015-08-23 13:05:20  
360图书馆 论文大全 母婴/育儿 软件开发资料 网页快照 文字转语音 购物精选 软件 美食菜谱 新闻中心 电影下载 小游戏 Chinese Culture
生肖星座解梦 人民的名义 人民的名义在线看 三沣玩客 拍拍 视频 开发 Android开发 站长 古典小说 网文精选 搜图网 天下美图
中国文化英文 多播视频 装修知识库
2017-5-26 7:57:52
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  软件世界网 --