在我当前的项目中,我们有一组服务类,它们受基于方法的安全性的保护。我如何创建方法安全保护的DAO的安全和不安全版本
现在在某些情况下,“系统”需要自行调用安全方法。 (例如:一个用户离开一个频道,并且该频道由于其空闲而被隐式关闭,通常'关闭'被保护)。
如何以安全和不安全的方式同时访问服务类?
编辑 - 短示例
auhentication期间,系统检查是否在这里是相对于用户的有源禁令。
public User authenticate(String name, String token) throws BadCredentialsException, RuntimeException {
User user = get(name);
if (user == null || !user.getToken().equals(token)) {
throw new BadCredentialsException("Invalid Project/Username/Password");
}
Ban userBan = banService.getBanForUser(user);
if (userBan != null) {
throw new UserBannedException("User was baned", userBan);
}
return user
}
但获得任何禁令是基于方法的安全保护,因此不是每个用户都可以“搞定”他们。
@PreAuthorize("isAuthenticated()")
public Ban getBanForUser(User user) {
return ...
}
所以基本上我需要两种方法来访问此方法。一个由spring-security inteceptor保护(对于“用户”),另一个不是(对于“系统”)。
这可能没有包装类,继承魔术,...
这将是巨大的,如果我可以定义具有相同的类一个带弹簧的安全性和一个内部消除两个弹簧豆。
您可以根据角色的基础上保护方法,如果ROLE_SUPER然后给访问'接近()'方法,或者如果其他角色再保护,同时提供更多的细节,以便我们可以帮助你。 –
@Nandkumar我添加了一个简短的例子。 – Laures