Jfinal登录拦截器,死循环

public class AuthInterceptor implements Interceptor {


public void intercept(ActionInvocation ai) {

Controller c = ai.getController();

String userName =  c.getSessionAttr("userName");

if (userName == null) {

c.redirect("/login");//如果将login命名为其他字符串就会死循环

return;

}

ai.invoke();

}

}

有工程test,登录拦截器如上,输入http://127.0.0.1:8080/test,拦截跳转到http://127.0.0.1:8080/test/login,正常。

如果将login命名为其他字符串(如/aaa,/loginaa,/bb...等),就会死循环,这是何解?

评论区

Ideality_hunter

2016-08-09 16:04

求助社区,thx

Romeo

2016-08-09 16:22

因为其他的路径还被AuthInterceptor 拦截了,而/login应该是加上了@Clear,/login不会经过拦截器。所以redirect的路径 要加上Clear。Clear用法见你的Jfinal版本对应的文档。

JFinal

2016-08-09 16:35

拦截器按照代码的意图陷入死循环而已,将不需要该拦截器的 action 使用 @Clear(AuthInterceptor.class) 清除一下即可

Ideality_hunter

2016-08-10 22:08

@JFinal 果然是,赞~

Ideality_hunter

2016-08-10 22:09

@Romeo 明白了,多谢~

热门反馈

扫码入社