Ale*_*lex 5 java spring spring-security
例如:
@PreAuthorize("hasRole('admin') && hasPermission('save', #user)")
void updateUser(User user) {
// some code
}
Run Code Online (Sandbox Code Playgroud)
以及一些没有 PreAuthorize 的示例实现。
void updateUser(User user) {
Security.hasRole(Roles.ADMIN);
Security.hasPermission(Permission.SAVE, user);
// some code
}
Run Code Online (Sandbox Code Playgroud)
第二个例子更容易理解。可以通过IDE重构(重命名角色,或查找所有角色用法)。编译时检查代码。工作更快。并可能有其他优点。
为什么 spring-security 开发人员选择注解和 SpEL?有人可以解释一下吗?
我能找到的只有一个原因 - 更容易访问 ApplicationContext。但据我所知,Spring Security 无论如何都可以通过 SecurityContextHolder 单例工作。
(从我的角度来看)最大的优点是,它可以在测试中轻松停用(或更正确的是,不激活)。
所以我可以编写我的测试(单元测试、功能测试……),而无需关注安全问题。这样测试就可以集中精力在他们想要测试的功能上。
当然,这对于“显式”版本(第二个示例)也是可能的,但是我需要在测试中注意它,这将使测试更长(更多代码)并且也意味着需要维护更多东西。
| 归档时间: |
|
| 查看次数: |
2037 次 |
| 最近记录: |