NutzCN Logo
问答 aop拦截,判断,处理的问题
发布于 2928天前 作者 ericleung 2197 次浏览 复制 上一个帖子 下一个帖子
标签:

实现了一个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完事了?

3 回复

改良了一下,上面的请无视。

	@Inject("tokenService")
	private TokenService tokenService;


	public void filter(InterceptorChain chain) throws Throwable {
		Object[] args = chain.getArgs();

		NutMap result = null;

		if(args == null || args[0] == null || ! (args[0] instanceof String) ){
			result = NutMap.NEW().addv("success", false).addv("error", "Token没有填写");
		}else{
			//约定放在参数的最前
			String token = (String) chain.getArgs()[0];
			if(!tokenService.checkToken(token)){
				result = NutMap.NEW().addv("success", false).addv("error", "Token不存在或已过期");
			}

		}

		if(result != null) {
			chain.setReturnValue(result);
			return;
		}

		chain.doChain();
	}
添加回复
请先登陆
回到顶部