我这边原本是想通过实现过滤器 在自定义过滤器中判断用户名与当前sessionId是否一样,可是在web.xml中添加自定义过滤器项目编译会报错,然后我考虑通过implements Interceptor 方法 在controller前调用@before来实现 不知道这两种方法是否都可以实现?
public class LoginSessionInterceptor implements Interceptor {
public void intercept(Invocation inv) {
Controller c = inv.getController();
String sessionId = c.getCookie(LoginService.sessionIdName);
if (sessionId != null) {
Account loginAccount = LoginService.me.getLoginAccountWithSessionId(sessionId);
if (loginAccount == null) {
loginAccount = LoginService.me.loginWithSessionId(sessionId);
}
if (loginAccount != null) {
// 用户登录账号
c.setAttr(LoginService.loginAccountCacheName, loginAccount);
} else {
// cookie 登录未成功,证明该 cookie 已经没有用处,删之
c.removeCookie(LoginService.sessionIdName);
}
}
inv.invoke();
}
}