Java 安全管理器--SecurityManager

安全管理器是一个允许应用程序实现安全策略的类。它允许应用程序在执行一个可能不安全或敏感的操作前确定该操作是什么,以及是否是在允许执行该操作的安全上下文中执行它。应用程序可以允许或不允许该操作。

 

    SecurityManager 类包含了很多名称以单词 check 开头的方法。Java 库中的各种方法在执行某些潜在的敏感操作前可以调用这些方法。对 checkXXX 方法的典型调用如下:

SecurityManager security = System.getSecurityManager();         
if (security != null) { security.checkXXX(argument,  ); }

    安全管理器通过抛出异常来提供阻止操作完成的机会。如果允许执行该操作,则安全管理器例程只是简单地返回,但如果不允许执行该操作,则抛出一个 SecurityException。该约定的唯一例外是checkTopLevelWindow,它返回 boolean 值。

    获取和设置当前的安全管理器是由System类中的getSecurityManager 和 setSecurityManager 方法处理的。

 

    特殊方法 checkPermission(java.security.Permission) 确定是应该允许还是拒绝由指定权限所指示的访问请求。默认的实现调用AccessController.checkPermission(perm);如果允许访问请求,则安静地返回 checkPermission。如果拒绝访问请求,则抛出 SecurityException。从 Java 2 SDK v1.2 开始,SecurityManager中其他所有 check 方法的默认实现都是调用SecurityManager.checkPermission 方法来确定调用线程是否具有执行所请求操作的权限。

创建安全管理器步骤:
(1)
 创建一个SecurityManager的子类;

(2)
 覆盖或创建一些方法。


创建安全管理器

    public class PasswordSecurityManager extends SecurityManager{
        private String password;
       
        PasswordSecurityManager(String password) {
            super();
            this.password = password;
        }
        public boolean accessOK(String password) {
            if(this.password.equals(password))  return true;
                     else return false;
        }
    }   

利用安全管理器
    public static void main(String args[]){
        PasswordSecurityManager manager = new PasswordSecurityManager("123456");
        if(!manager.accessOK(args[0])) return;
        ......
    }

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值