NutzCN Logo
问答 如何登录判断,希望通过对每个方法的拦截,这样刚好实现手机接口与pc接口公共
发布于 2928天前 作者 herexu 1964 次浏览 复制 上一个帖子 下一个帖子
标签:

@IocBean
public class LoginInterceptor implements MethodInterceptor{
private static final Log log = Logs.get();

public void filter(InterceptorChain chain) throws Throwable {
    log.info("LoginInterceptor start -->" + chain.getCallingMethod()+chain.getArgs());
    HttpServletRequest req = Mvcs.getReq();
    HttpServletResponse resp = Mvcs.getResp();

    Date date = (Date) req.getSession().getAttribute(KeyUtils.LOGIN_TIME);
    if((date==null || DateUtils.pastMinutes(date)>=KeyUtils.LOGIN_TIME_LENTH)){
       resp.sendRedirect(req.getServletContext().getContextPath()+"/login");
    }else{
       chain.doChain();// 继续执行其他拦截器
    }

log.info("LoginInterceptor end -->" + chain.getCallingMethod()+chain.getArgs()+chain.getReturn());
}
}
这思路大概就是,先有Fileter进行拦截,只判断是否有登录,页面给什么就跳转什么
等调到页面时再进行方法拦截处理,看是否有登录,如未登录,提醒登录或注册
1、目前遇到的问题就是在MethodInterceptor 跳转不了,会出现页面重叠,无法直接window.open
2、想问一下各位大神不知道这个思路是不是又逻辑漏洞
具体出现这个方法拦截的想法,是因为手机端和pc端的Module不是同一套,PC采用的是NUTZ提供的模板引擎,现在看来其实主要问题是手机端能不能用模板引擎开发系统?

10 回复

"目前遇到的问题就是在MethodInterceptor 跳转不了,会出现页面重叠,无法直接window.open"

这个是什么意思??? 事实上已经重定向到目标页面了? 但显示有问题?

PS: resp.sendRedirect 后应该抛出个异常吧。

就是重定向的时候,页面不会全部刷新,只是在原有的页面中从中再加载一个页面出来

不对,我感觉自己的思路也不太对,这么设计好么?
如果换成Filetr判断是否登录,是用包路径判断的,感觉分包的时候也比较麻烦,有没有好一点的设计

@wendal 忘了点回复那个按钮

@xulh 页面是怎么做的? ajax吗? 是不是判断错误啦??? 逻辑贴一下呗

@wendal 是的,ajax请求,请求之后,如果判断未登录,就重定向,我大概明白了,这个是ajax的问题,我是拿ajax做方法测试拦截Interceptor

@wendal 不过这么设计也不好,方法就不能共用,灵活性太差,还是用Filter传统方式控制好一点
但是这个Filter要怎么设计会好一点,除了弄一个请求URL链接池的方式去过滤,分包处理
有没有更好一点的方式

你想拦截所有入口方法?改一下动作链,nutzbook里面有添加动作链的实例

添加回复
请先登陆
回到顶部