在我当前的项目中,我们有一组受基于方法的安全性保护的服务类。
现在在某些情况下,“系统”需要自己调用安全方法。(例如:用户离开频道并且频道被隐式关闭,因为它是空的。通常“关闭”受到保护)。
如何同时以安全和不安全的方式提供对服务类的访问?
编辑 - 简短的例子
在身份验证期间,系统会检查此处是否对用户进行了主动禁止。
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保护(对于“用户”)和一个不受保护(对于“系统”)。
如果没有包装类,继承魔法,这是否可能......
如果我可以定义两个具有相同类的spring bean,一个带有spring-security,一个不带spring-security,那就太好了。