gpt4 book ai didi

java - 有人可以 exlpain 利用 spring-security PreAuthorize 注释吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:23:31 24 4
gpt4 key购买 nike

例如:

@PreAuthorize("hasRole('admin') && hasPermission('save', #user)")
void updateUser(User user) {
// some code
}

以及一些没有 PreAuthorize 的示例实现。

void updateUser(User user) {
Security.hasRole(Roles.ADMIN);
Security.hasPermission(Permission.SAVE, user);
// some code
}

第二个例子比较容易理解。可以通过IDE重构(重命名角色,或者查找所有角色用法)。编译时的代码检查。工作更快。可能还有其他优势。

为什么 spring-security 开发者选择注解和 SpEL?有人可以解释一下吗?

我能找到的只有一个原因 - 更容易访问 ApplicationContext。但据我所知,Spring Security 可以通过 SecurityContextHolder 单例以任何方式工作。

最佳答案

最大的优势(从我的角度来看)是,它可以在测试中轻松停用(或更正确,不激活)。

这样我就可以编写我的测试(单元测试、功能测试等),而无需关注安全问题。以便测试人员可以专注于他们想要测试的功能。

当然这对于“显式”版本(第二个示例)也是可能的,但是我需要在测试中注意它,这会使测试更长(更多代码)并且也意味着需要维护更多东西.

关于java - 有人可以 exlpain 利用 spring-security PreAuthorize 注释吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9193996/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com