对于Spring Security应用程序中的GrantedAuthority对象,我感到担心。我正在寻找一种处理问题的好方法。首先,我要描述我的关注,如果有任何事实错误,请毫不犹豫地指出,我将非常感激。

Spring Security使用GrantedAuthority实例充当应用程序不同部分的授权令牌。

默认情况下,GrantedAuthority可以将自己显示为字符串。当使用@Secured(“ ROLE_NAME”)保护方法,或者使用Spring XML配置保护URL的安全时,或者像if(request.isUserInRole(“ ROLE_NAME”)){..}中那样以编程方式检查HttpServletRequest请求时,它总是您用来指定要检查的权限的字符串。

我想知道在应用程序的多个位置使用静态字符串的含义。如果更改了角色名称,则开发人员必须查找所有旧字符串并进行更新。如果缺少字符串,则不会出现编译时错误,而只是在运行时出现问题。

在Spring Security应用程序中处理GrantedAuthority对象时,根据您的最佳方法是什么?您的解决方案有什么优点和缺点?

最佳答案

首先,如果可能的话,请仅在应用程序中的特定位置(例如,请求开始处的HTTP拦截器)进行检查,并且仅使用上述方法之一。这是一个好习惯,因为您将能够权威地知道用户被授权的时间。

如果无法做到这一点,请为角色名称使用枚举,并且仅在枚举上进行比较。因此,如果您想在应用程序中找到所有用法,这是一个简单的搜索。

关于java - Spring Security:需要有关如何处理GrantedAuthority的建议,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/824919/

10-13 09:12