java 的 AccessController.doPrivileged使用

AccessController.doPrivileged意思是这个是特别的,不用做权限检查.

在什么地方会用到呢:加入1.jar中有类可以读取一个文件,现在我们要使用1.jar去做这个事情.但是我们的类本生是没有权限去读取那个文件的,一般情况下就是眼睁睁的看着了.  

但是jiava提供了doPrivileged.在1.jar中如果读取文件的方法是通过doPrivileged来实现的.就不会有后面的检查了,现在我们就可以使用1.jar去读取那个文件了.

例子:

Java代码  收藏代码
  1. package huangyunbin.client;  
  2.   
  3. import java.io.FilePermission;  
  4. import java.security.AccessController;  
  5. import java.security.Permission;  
  6. import java.security.PrivilegedAction;  
  7.   
  8. public class Client  
  9. {  
  10.     public   void  doCheck() {  
  11.                 AccessController.doPrivileged( new  PrivilegedAction()  {  
  12.             public  Object run()  {  
  13.                 check();  
  14.                 return   null ;  
  15.             }  
  16.         } );  
  17.     }  
  18.   
  19.     private   void  check()  {  
  20.         Permission perm  =   new FilePermission( "/1.txt" ,  "read" );  
  21.         AccessController.checkPermission(perm);  
  22.         System.out.println( " TestService has permission " );  
  23.     }  
  24. }  



把这个类打包成client.jar 放到/home/h/client/下
我们建立个my.policy文件,文件内容是:

Java代码  收藏代码
  1. grant codeBase  "file:/home/h/client/*"   {  
  2.      permission java.io.FilePermission  "/1.txt","read";  
  3.  };  



配置文件的意思是 /home/h/client/下面的jar包或class类 可以读取/1.txt.


现在我们再创建一个项目:创建一个类来调用前面的Client

Java代码  收藏代码
  1. public class server  
  2. {  
  3.     public static void main(String[] args)  
  4.     {  
  5.         Client c =new    Client();  
  6.         c.doCheck();  
  7.     }  
  8. }  



运行这个server类.注意这里要用上之前的my.policy文件
在vm参数中写上这样的:

Java代码  收藏代码
  1. -Djava.security.manager   
  2. -Djava.security.policy=/home/h/my.policy  



运行,结果是
TestService has permission

在配置文件my.policy中我们没有允许server去读取/1.txt,但是现在却可以正常访问.这个就是 AccessController.doPrivileged的作用.

 

原文:http://huangyunbin.iteye.com/blog/1942509

推荐文章:Java 安全模型介绍

转载于:https://www.cnblogs.com/langtianya/p/5133633.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/357757.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cordova 实现网页缓存_如何解决ionic,cordova混合开发的app缓存大的问题

如何解决ionic,cordova混合开发的app缓存大的问题关注:143 答案:2 mip版解决时间 2021-02-05 06:24提问者旧梦已过期2021-02-04 16:54如何解决ionic,cordova混合开发的app缓存大的问题最佳答案二级知识专家臸釪樶初2021-02-04 17:10可以试试sd卡挂在&a…

当年课设期末大作业,班主任让我们做一个新闻发布管理系统

导读:基于web的新闻发布及管理系统的设计与实现,是动态网页和数据库结合,通过事件来处理新闻。我们对最新信息的更新和发布需要比较及时,而动态交互网页能实现这些功能,新闻发布及管理系统就是一个能够在网上实现新闻的发布及管理,让人们更好的获取更新的新闻资讯。 随着电…

疫情期间,在家使用java的SSH框架实现一个简单的任务调度系统

导读:随着科学技术的飞速发展和各行各业的分工愈发明细化,对于改革传统的人工任务调度方式的呼声越来越大。得益于快速发展的计算机技术,我们看到了改革的方向。本系统是针对企业或者事业单位甚至一个小团队的任务调度而设计的,目的是改变传统的调度方式,通过计算机来计算…

你在乎的--世界在乎的

惊闻苍老师在某地做活动,距离公司不远,便蠢蠢欲动,招呼几个小伙伴一同前往。老师果然是全民偶像,人生导师,人气火爆,现场是人山人海,根本没有立足之地,后来听说,由于人太…

css3优惠卷上方锯齿_css3怎么实现锯齿边框?

白板的微信你这样的最好还是切图做用css3也达不到一毛一样的效果,如果你很想要尝试一下的话可以试试,不过边缘不是顺滑的感觉

改善Hibernate应用程序性能的7种方法

Hibernate是将Java Web应用程序与SQL数据库集成的好工具,但是当应用程序的响应时间开始显着增加时,我们应该怎么做? 当我们怀疑应用程序是否会随着客户群的增长而扩展时,我们该怎么办? 在花大价钱托管或重写代码之前&…

java网络爬虫技术也可以代替Python实现网络新闻分析系统

导读:自从大数据的概念被提出后,互联网数据成为了越来越多的科研单位进行数据挖掘的对象。网络新闻数据占据了互联网数据的半壁江山,相比传统媒体,其具有传播迅速、曝光时间短、含有网民舆论等相关特征,其蕴含的价值也愈来愈大。 利用相关网络爬虫技术与算法,实现网络媒体…

centos 服务器装与python34源码安装

http://www.111cn.net/sys/CentOS/63645.htm 1、CentOS安装Python的依赖包(不安装依赖包,会导致python安装不完整) yum groupinstall "Development tools"yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-…

CSDN:2020博客之星年度总评选大赛,趣味总结!

导读:从2020年正式写博客,第一次参加活动,竟然落选了,在此记录一下这个过程吧,方便找帖子链接,毕竟靠着本人的影响力还是能捞点饭票的,哈哈。 2020博客之星年度总评选活动地址:https…

Java 日期格式

转载于:https://www.cnblogs.com/bylion/p/5141022.html

java获取默认用户目录_Java获取当前路径

1、利用System.getProperty()函数获取当前路径:System.out.println(System.getProperty("user.dir"));//user.dir指定了当前的路径2、使用File提供的函数获取当前路径:File directory new File("");//设定为当前文件夹try{System.o…

zk框架_ZK Web框架思想

zk框架我曾多次被要求提出一些有关ZK的意见。 因此,根据我4年作为ZK用户的经验,有一些想法: 总体开发人员经验,社区和文档 “就是这样” ZK提供的大多数东西都能很好地工作,并且如果您以前开发过任何桌面Java应用程序…

一文教你用java实现出租车计价器设计(附下载源码)

导读:在我国,出租车行业是八十年代初兴起的一项新兴行业,随着出租车的产生,计价器也就应运而生。但当时在全国没有一家企业能够生产,因而那个时期的计价器是由台湾引进。台湾是计价器的主要生产场地,目前全…

写论文的思考

以下引自知乎的回答 需要的能力 1.资料检索的能力 2.资料筛选的能力 3.期刊论文的阅读能力,期刊论文和大学部的课本截然不同。大学部的课本是寻次渐进地从最基本的知识背景逐步交代出整套有系统的知识,中间没有任何的跳跃,只要你逐页读下去…

java mongo subtract_春数据MongoDB的聚合框架,例外

组访问计算值,我有旅行的集合,每行有一个的startDateTime和completionDateTime财产。春数据MongoDB的聚合框架,例外我试图使用聚合框架来找到用户的出行的平均持续时间。我的聚集看起来非常简单,但和它抛出一个异常。有以下3个步骤…

一键转发抢红包源码及搭建教程

导读:一键转发抢红包搭建教程如下:源码请在资源模块下载。 搭建教程 第一步注册bmob建立一个项目 项目包括这些表单(file表可以不建立) (应用ID在后台项目设置里面) 表DaSha这样建立 表Sha这样建立 找zi()方法第一步

Java性能教程– Java 8流有多快?

在此JAX Magazine的预览预览中,JAX伦敦发言人Angelika Langer为使用Java流的任何人回答了最重要的问题:它们真的更快吗? Java 8是JDK收集框架的主要新增功能,即流API。 与集合相似,流表示元素序列。 集合支持对单个元…

android 开发

初学者学习 Android 开发,有什么好网站推荐? 前段日子一直在看安卓巴士这个网站,但网站突然进行改版,很多内容都找不到了,一下子怅然若失起来1 条评论 分享按投票排序按时间排序50 个回答 yava,半瓶水fei …

java迭代器删除重复元素_Java中的List删除重复元素

List接口做为Java集合框架中的一员,对数据的操作和处理比数组方便许多。在数组中插入一个元素要从数组的最后一个元素到当前插入的位置依次向后移动一位,然后为插入的位置进行赋值。在数组删除一个元素要从删除元素的下一个元素位置到数组最后一个元素依…

2021Golang技术基础知识及学习路线图

导读:Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。 Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发…