我有一个API
public interface UserService{
@GetMapping("/get-user-data")
public Response getUserData();
}
我有我的impl如下
public class UserServiceImpl implements UserService{
private boolean isAuthorized = false;
public Response getUserData(User user){
//check if user is authorized
isAuthorized = isUserAuthorized()?true:false;
//perform other things based on above boolean
return someResponse;
}
}
我想这个布尔“isAuthorized”必须设置为假的每一个调用这个API。无论我有以上是不工作,如何实现这一点?
2条答案
按热度按时间4jb9z9bj1#
我们通常不跟踪布尔变量的状态,而是根据肯定条件执行一些操作:
但是如果你真的想跟踪那个状态,你可以在方法调用结束时将变量设置为false:
注意:这可能会导致与并发性相关的问题,但如果这与您无关,也没有什么坏处。
f87krz0w2#
如果你想为所有的API方法调用一个业务逻辑方法,你需要使用一个web HandlerInterceptor,例如:
并使用WebMvcConfigurer实现配置此拦截器,例如:
然后你可以在你的控制器方法中使用它,你将看到并访问来自请求对象的is_authorized属性。示例:
您可以在以下存储库中看到一个工作示例:https://github.com/eriknyk/springboot-web-interceptor-demo/