当你想定义一个新类型的权限时,你必须实现抽象类java.security.Permission。所以你需要定义隐含函数。这些功能何时被调用?什么时候Java安全“隐含”函数被调用?
回答
所以,显而易见的答案是你打开你最喜欢的IDE并提出问题。有很多废话,但Permissions
和ProtectionDomain
在其implies
方法中使用它。
因此,让我们从有趣的地方开始,尝试找出发生了什么。
AccessControlContext.checkPermission
是一个有趣的方法,如果我们想知道acc是否允许特权。在AccessControlContext.checkPermission
的调试混乱中,致电ProtectionDomain.implies
(通过context[i]
)。看起来合理,每个ProtectionDomain
“在堆栈中”需要允许该权限。
ProtectionDomain.implies
class implies
on PermissionCollection
。很公平。
PermissionCollection
是一个抽象类,但Permissions
是API文档指出的实现。这将打电话implies
Set
的Permission
,对吧?拿去。它为Permission
的每种类型(实现)创建专家PermissionCollection
。
专家收藏是java.security
设计的一个非常多毛的部分。举一个例子,FilePermission.newPermissionCollection
(我在键入时返回)返回一个FilePermissionCollection
(只出现在API文档中用于不需要的序列化目的 - 诅咒Java序列化)。 FilePemrissionCollection.implies
是一个优化,它不会调用FilePermission.implies
,但推断其实现。因此通常不会调用Permission.implies
。代替使用Permission.newPermissionCollection
的优化版本。
(我不是Java 2安全模型或库的粉丝。)
- 1. 什么时候对javascript函数的objective-c调用被调用/执行,什么时候不调用?
- 2. 什么时候可以安全使用PHP strtolower()函数?
- 3. BackgroundTransferService - TransferProgressChanged什么时候被调用?
- 4. 什么时候viewDidAppear被调用?
- 5. 什么时候document.ready()被调用?
- 6. 什么时候ViewWillAppear被调用?
- 7. 什么时候onNewPicture()被调用?
- 8. 什么时候ConvertBack方法被调用?
- 9. 什么时候TGraphicControl.Paint被调用?
- 10. 什么时候initWithCoder被调用?
- 11. 什么时候InitializeCulture被调用
- 12. 什么时候ReleaseView被调用?
- 13. 什么时候ExecutionContext#reportFailure(Throwable)被调用?
- 14. 什么时候body.rendered被调用与meteor.js
- 15. 什么时候在嵌套类中调用构造函数(Java)
- 16. 什么时候完全onServiceConnected有界服务会被调用?
- 17. 什么时候可以安全地在std :: thread上调用native_handle()?
- 18. 什么时候可以安全地调用pthread_attr_destroy?
- 19. 什么时候可以安全地调用TIdTCPConnection.Disconnect?
- 20. 什么时候线程安全问题?
- 21. WCF相互SSL安全什么时候使用什么证书?
- 22. 什么时候在调用javascript函数时使用()
- 23. 什么时候注入构造函数,什么时候是CDI
- 24. 什么时候使用QTimer调用多个函数调用的析构函数?
- 25. 为什么有时候viewDidLoad首先被调用,有时候被称为后者?
- 26. 什么时候调用exit_mmap?
- 27. 什么时候调用robot.cleanUp()
- 28. 什么时候调用setDataTimeout?
- 29. 什么时候调用scrollIntoView()
- 30. 什么时候调用webview.clearData
您已经添加了API文档,对不对?你不了解什么部分?你的问题的答案就在那里。 – vanza