一.案例--登录验证

* 需求:
                1. 浏览器访问case案例(服务器)的资源时。验证其是否登录
                2. 如果登录了,则直接放行。
                3. 如果没有登录,则跳转到登录页面,提示"您尚未登录,请先登录"。

二.功能分析

三.代码的编写

由于前面的登录页面已经完成(前几篇博客),所以我们需要做的就是编写一个Filter类,来过滤用户通过浏览器访问服务器的页面,增强其功能。

过滤器首先要判断浏览器访问的资源是否是与登录页面相关的资源

》》》》如果浏览器访问的页面不是login.jsp页面或者checkloginservlet,以及与登录页面相关的资源时,则需要判断当前用户是否登录:(可以根据Session域中是否有user属性来判断,因为在登录页面时,如果登录成功后,会在checkloginservlet中把User的信息存储到Session中)

判断用户是否登录:可以根据Session域中getAttribute("user")来判断是否存在

如果存在,则Filter中执行chain.doFiltere(req,resp),放行

如果不存在,则跳转到登录页面,并setAttribute("msg",“提示用户未登录”);

》》》如果访问的资源页面是登录页面,则直接在Filter中执行chain.doFiltere(req,resp),放行

代码:(Filter类)

package web;import java.io.IOException;import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;@WebFilter("/*")
public class Filter implements javax.servlet.Filter{@Overridepublic void destroy() {// TODO Auto-generated method stub}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {//1.获取资源请求的路径,强制转换HttpServletRequest req= (HttpServletRequest)request;String rString=req.getRequestURI();//2.有些资源需要放行if(rString.contains("/login.jsp")||rString.contains("/checklogin")||rString.contains("/checkcode")||rString.contains("/css/")||rString.contains("/js/")||rString.contains("/fonts/")) {chain.doFilter(req, response);}else { //3.当访问其他资源,就判断是否登录Object obj=req.getSession().getAttribute("user");  //一般登陆成功后会用session封装存储用户,这个就是判断依据if(obj!=null) {  //如果有,则放行chain.doFilter(request, response);}else {  //如果没有,则跳转到登录界面req.setAttribute("log_msg", "您还没有登录,请先登录!");req.getRequestDispatcher("/login.jsp").forward(req, response);}}}@Overridepublic void init(FilterConfig filterConfig) throws ServletException {// TODO Auto-generated method stub}}

登录验证---过滤器(Fileter)相关推荐

  1. java web 怎么用solr_使用web过滤器增加solr后台登录验证

    solr后台自带是没有登录功能的,默认访问地址是:http://localhost:8983/solr/#/(内置jetty运行). 要给sorl后台增加登录验证方法: 1.使用web服务器的登录验证 ...

  2. 【Filter过滤器案例】登录验证+敏感词过滤

    登录验证 >>> 思路: >>> 先假设拦截所有资源(Servlet, jsp...均不让访问),判断资源是否与登录有关: >>> 1.与登录相关 ...

  3. 使用filter过滤器实现简单用户登录验证(不用配置web.xml文件)

    一.filter过滤器的作用 如果想要获取中文字符,或者是显示提交的中文,就需要添加以下代码,来防止乱码的情况发生. request.setCharacterEncoding("utf-8& ...

  4. shiro 实现登录验证功能

    实现登录验证功能 1.创建自己的Realm对象,继承AuthorizingRealm ​    实现父类的doGetAuthenticationInfo 认证方法 MyRealm.java packa ...

  5. java shiro登录实例_Shiro安全框架入门篇(登录验证实例详解与源码)

    转载自http://blog.csdn.net/u013142781 一.Shiro框架简单介绍 Apache Shiro是Java的一个安全框架,旨在简化身份验证和授权.Shiro在JavaSE和J ...

  6. [MVC学习笔记]5.使用Controller来代替Filter完成登录验证(Session校验)

    之前的学习中,在对Session校验完成登录验证时,通常使用Filter来处理,方法类似与前文的错误日志过滤,即新建Filter类继承ActionFilterAttribute类,重写OnAction ...

  7. 使用Spring Security进行自动登录验证

    ** 原文来自师兄的博客 **: http://blog.csdn.net/df19900725/article/details/78085152 http://www.datalearner.com ...

  8. SpringMVC 登录验证实例

    1.pom.xml中加入SpringMVC的依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=& ...

  9. 图解用户登录验证业务流程(推荐)

    点击关注公众号,实用技术文章及时了解 前言 本文通过图示及代码的方式介绍用户登录流程及技术实现,内容包括用户登录,用户验证,如何获取操作用户的信息以及一些黑名单及匿名接口如何免验证相关的实现. 结合昨 ...

最新文章

  1. %matplotlib inline %config InlineBackend.figure_format = “retina为了将图片嵌入notebook及提高分
  2. Windows内核加载器概念学习
  3. HALCON示例程序bottle.hdev、bottlet.hdev瓶体字符OCR的训练和检测
  4. 【Blog】Start My Journey In Cnblogs!
  5. centos7下swoole1.9的安装与HttpServer的使用
  6. 使用dao时,如何同时使用动态表名和过滤字段?
  7. Sentinel流控规则_QPS直接失败_分布式系统集群限流_线程数隔离_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0033
  8. MYSQL学习笔记2--mysql 静态和动态plugin
  9. 【Python】LDA模型中文文本主题提取丨可视化工具pyLDAvis的使用
  10. windows10卸载edge浏览器并将chrome设为默认浏览器
  11. bat批处理的注释语句
  12. 专访京东孙海波:大牛架构师养成记及电商供应链中区块链技术的应用(转)...
  13. 关于临时HY学长被安排拉二分题不想翻译找到DYM学长这件事(二)
  14. AI绘画初体验(6pen平台)
  15. 后羿采集器怎么导出数据_怎么安装后羿采集器?后羿网页数据采集器安装教程...
  16. 安卓5.0开发环境的搭建
  17. Win获取本地SVN帐号密码
  18. 来自腾讯相当好的文章:研发效能度量实践指南
  19. 华为荣耀手机复制卡号,开启NFV功能。说白了就是将原本的卡的信息复制到手机上,以后不用带卡,带手机就行了。
  20. CTF(信息安全夺旗赛)学习网址

热门文章

  1. boost::python模块实现使用内置 python 数据类型创建 ndarrays 的示例,并提取成员变量的类型和值测试程序
  2. boost::compose_property_map相关的测试程序
  3. boost::hana::partial用法的测试程序
  4. boost::fibers模块实现multiple streams的测试程序
  5. Boost:bind绑定右值的测试程序
  6. Boost:传输文件的测试程序
  7. 保持边缘平滑的图像(曲率)
  8. VTK:可视化算法之SplatFace
  9. VTK:结构化网格之GetLinearPointId
  10. OpenCV使用模板与遮罩匹配的实例(附完整代码)