我在Spring MVC中有以下拦截器来检查用户是否可以访问处理程序方法:
@GetMapping("/foo")
@Auth(AuthType.ALLOW)
fun doesntNeedAuth(...) { ... }
@GetMapping("/bar")
@Auth(AuthType.ADMIN)
fun adminMethod(...) { ... }
在我的控制器中,我做了注释方法,如下所示:
export class GlobalDataService {
private reserveSource = new BehaviorSubject<any[]>([]);
currentReserve = this.reserveSource.asObservable();
constructor() { }
changeReserve(reserve: any[]) {
this.reserveSource.next(reserve)
}
}
如果用户有令牌错误或没有权限,则返回错误 是否可以在带有注释样式控制器的Spring WebFlux中执行此操作?
答案 0 :(得分:0)
要解决该问题,我很可能会使用:
来自WebHandler API的Spring Reactive Web WebFilter
拦截传入的请求
RequestMappingHandlerMapping
检索处理当前请求的方法
@Autowired
RequestMappingHandlerMapping requestMappingHandlerMapping;
...
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
...
HandlerMethod handler = (HandlerMethod) requestMappingHandlerMapping.getHandler(exchange).toProcessor().peek();
//your logic
}