Jac*_*kie 5 spring-mvc spring-boot
我有以下......
@GetMapping("signup")
public String get(){
return "forward:/";
}
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler) throws IOException {
...
if(!per.isPresent() && !request.getRequestURL().toString().contains("signup")){
response.sendRedirect("/signup");
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
这里的问题是当前进来的时候没有注册,所以我重定向回来.但是,我还想拦截直接发送到根目录的请求.
有没有办法判断一个请求是否是一个转发,原始网址是什么?
这是我想出的可行的解决方案。我不喜欢这个答案,并且当似乎应该提供转发的信息时,我不希望附加自定义标头。但是,由于我在文档中找不到该信息,所以我只是添加了标题......
@GetMapping("")
public String get(HttpServletResponse response){
response.setHeader("signup","true");
return "forward:/";
}
Run Code Online (Sandbox Code Playgroud)
然后我查了一下
private static boolean isSignupForward(HttpServletResponse response){
return Boolean.valueOf(response.getHeader("signup"));
}
...
if(
!isSignupForward(response) &&
!per.isPresent() &&
!isSignup(request) &&
!isJsFile(request)
){
response.sendRedirect("/signup");
return false;
}
Run Code Online (Sandbox Code Playgroud)
如果有人有更好的答案,我将留下赏金。
归档时间: |
|
查看次数: |
75 次 |
最近记录: |