AccessController.doPrivileged 的应用场景
AccessController.doPrivileg 方法允许代码块在特定的安全上下文(Access Control Context,ACC)中执行。它将代码块包装在
edPrivilegedAction 或 PrivilegedExceptionAction 中,并将其传递给 doPrivileged 方法执行。 示例如下:
AccessController.doPrivileged(new PrivilegedExceptionAction() { @Override public InetAddress run() throws UnknownHostException { return InetAddress.getByName(hostname); } });
何时使用 AccessController.doPrivileged?
主要应用于以下场景:
doPrivileged 允许代码在不改变自身权限的情况下执行这些操作。doPrivileged 将特定权限委托给子线程,从而精细地控制线程的权限。不使用 AccessController.doPrivileged 的风险
如果在需要更高权限的操作时不使用 AccessController.doPrivileged,可能导致:
因此,在执行受限操作时,使用 AccessController.doPrivileged 对于维护代码的安全性、稳定性和可靠性至关重要。