Java 是否有人可以exlpain advantage spring security预授权注释?
例如:Java 是否有人可以exlpain advantage spring security预授权注释?,java,spring,spring-security,Java,Spring,Spring Security,例如: @预授权(“hasRole('admin')和&hasPermission('save',#user)”) void updateUser(用户){ //一些代码 } 以及一些未经预授权的示例实现 void updateUser(用户){ Security.hasRole(Roles.ADMIN); Security.hasPermission(Permission.SAVE,user); //一些代码 } 第二个例子更容易理解。可以通过IDE进行重构(重命名角色或查找所有角色用法)
@预授权(“hasRole('admin')和&hasPermission('save',#user)”)
void updateUser(用户){
//一些代码
}
以及一些未经预授权的示例实现
void updateUser(用户){
Security.hasRole(Roles.ADMIN);
Security.hasPermission(Permission.SAVE,user);
//一些代码
}
第二个例子更容易理解。可以通过IDE进行重构(重命名角色或查找所有角色用法)。编译时的代码检查。工作快一点。还有其他好处
为什么spring安全开发人员选择注释和SpEL?有人能解释一下吗
我能找到的唯一原因是更容易访问ApplicationContext。但就我所见,spring安全性通过SecurityContextHolder singleton以任何方式工作。最大的优势(从我的角度来看)是,它可以在测试中轻松停用(或者更正确,不激活)
因此,我可以编写我的测试(单元测试、功能测试等等),而不必注意安全性。这样测试就可以专注于他们想要测试的功能
当然,对于“显式”版本(第二个示例),这也是可能的,但是我需要在测试中注意这一点,这将使测试更长(更多代码),也意味着需要维护更多的内容。除了@Ralph answer,我还将添加一些其他优点