如何在Java中设置AccessControlContext?

Jas*_*son 5 java security unit-testing mocking

我对Java安全性还很陌生,并且很难弄清楚如何用Google搜索正确的答案。

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

我想运行一个测试该结果的测试。不幸的是,我不知道自己在做什么。

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

更新资料

只是为了澄清,我知道如何模拟接口。AccessController是Java安全功能。我在寻找如何设置自己的上下文时遇到麻烦,因此当方法调用时,AccessController.getContext()它会返回我选择的AccessControlContext。

Jas*_*son 4

好吧,我已经弄清楚了。基本上我想做的是:

Subject subject = Subject.getSubject(AccessController.getContext());
Run Code Online (Sandbox Code Playgroud)

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

Subject subject = new Subject();  //Set Principles here
Subject.doAs(subject, new PrivilegedAction<Void>()
{
    public Void run()
    {
        Foo.methodThatCaresAboutSubject();
    }
});
Run Code Online (Sandbox Code Playgroud)