实现了一个MethodInterceptor类,判断被拦截的参数中的第1个是否有效,如下面
@IocBean
public class TokenCheckInterceptor implements MethodInterceptor {
@Inject("tokenService")
private TokenService tokenService;
public void filter(InterceptorChain chain) throws Throwable {
Object[] args = chain.getArgs();
NutMap result = null;
//取得最后一个参数,约定放在参数的最前
String token = null;
try {
token = (String) chain.getArgs()[0];
if(token == null){
throw new Exception();
}
if(!tokenService.checkToken(token)){
result = NutMap.NEW().addv("success", false).addv("error", "Token不存在或已过期");
}
}catch(Exception ex){
result = NutMap.NEW().addv("success", false).addv("error", "Token没有填写");
}
if(result != null) {
chain.setReturnValue(result);
return;
}
chain.doChain();
}
}
问题是token非法时,没有执行doChain,能不能直接setReturnValue完事了?