5

我对 Java 安全性的东西还很陌生,我很难弄清楚如何在谷歌上找到正确的答案。

我有一行代码读取AccessController.getContext().

我想运行一个测试来模拟这个结果。不幸的是,我不知道我在做什么。

如何设置AccessControlContext返回者AccessController.getContext()

更新

澄清一下,我知道如何模拟接口。AccessController 是一种 Java 安全功能。我无法找出如何设置自己的上下文,以便在调用方法AccessController.getContext()时返回我选择的 AccessControlContext。

4

1 回答 1

4

好的,我已经想通了。基本上我想做的是:

Subject subject = Subject.getSubject(AccessController.getContext());

为了创建AccessControlContext包含 a 的Subject,您必须调用尝试获取主题的方法,如下所示:

Subject subject = new Subject();  //Set Principles here
Subject.doAs(subject, new PrivilegedAction<Void>()
{
    public Void run()
    {
        Foo.methodThatCaresAboutSubject();
    }
});
于 2012-10-22T19:56:52.720 回答