1.7. 使用安全授权进行代码
当您为嵌入式缓存配置安全授权并构建 DefaultCacheManager
时,它会返回一个 SecureCache
,用于在调用任何操作前检查安全上下文。SecureCache
还确保应用无法检索较低级别的不安全对象,如 DataContainer
。因此,您必须使用具有所需授权的身份执行代码。
在 Java 中,使用特定身份执行代码通常意味着嵌套在 PrivilegedAction
中要执行的代码,如下所示:
使用 Java 8,您可以按照如下所示简化前面的调用:
Security.doAs(mySubject, PrivilegedAction<String>() -> cache.put("key", "value"));
Security.doAs(mySubject, PrivilegedAction<String>() -> cache.put("key", "value"));
前面的调用使用 Security.doAs ()
方法,而不是 Subject.doAs ()
。您可以在 Data Grid 中使用以下任一方法,但 Security.doAs ()
提供了更好的性能。
如果您需要当前的 Subject,使用以下调用从 Data Grid 上下文或从 AccessControlContext 检索它:
Security.getSubject();
Security.getSubject();