通过注解方式实现登录验证

在这篇笔记 《SpringMVC登录验证从有到无》中说明了如何通过SpringMVC去实现了登录验证功能。但是这种方式适用于后台管理系统,在前台应用中,有很多接口不需要登录也可以访问,如果要在拦截器中去一一判断就显得太麻烦不够优雅了。

优雅的实现方式 —— 注解

1.创建注解

@Target(ElementType.METHOD) 
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface LoginCheck {
}

2.在Controller的方法上使用@LoginCkeck注解

@RequestMapping(value = "/toHome", method = RequestMethod.GET)
@LoginCheck
public String toHome() {
    return "home";
}

3.在拦截器进行注解校验

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    super.preHandle(request, response, handler);

    HandlerMethod handlerMethod = (HandlerMethod) handler;
    Method method = handlerMethod.getMethod();
    if (method.isAnnotationPresent(LoginCheck.class)) {
        // 使用@LoginCheck注解,则进行登录验证
        HttpSession session = request.getSession();
        User user = (User) session.getAttribute(Constans.USER);
        if (user != null) {
            return true;
        }
        // 不符合条件的跳转到登录界面
        //    response.sendRedirect("/mall-console/login.do");
        // 解决重定向登录界面在iframe页面显示不在top页面显示的问题
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<script>");
        out.println("window.open('/mall-console/login.do', '_top')");
        out.println("</script>");
        out.println("</html>");
        return false;
    }
    return true;
}

4.总结

不需要任何的url字符串的匹配,仅仅通过判断方法是否使用@LoginCheck注解,是不是更加优雅?仔细看看,静态资源的访问问题也不存在了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 178,941评论 25 709
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,789评论 11 349
  • 唐多令.晚秋 红叶渡秋浓 奇云叠嶂峰。 慢卷舒,惬意闲庭。 又是一年秋季好, 雁飞过,渐寒冬。 暮夜雨星星, 淅淅...
    我是月光公主阅读 193评论 0 0
  • 爸让我跟他到田里撒化肥,我蹬踏着脚踏车,悠哉地行进在乡间小路上,尽情享用这无限清凉的乡间小景。锻炼少就是不行,路还...
    恋树花语阅读 254评论 0 1
  • 占坑
    zhi6hao阅读 246评论 0 0

友情链接更多精彩内容