在web.xml中配置过滤:

LoginFilter

com.verification.action.LoginFilter

LoginFilter

y/form/dealParse.do

/*  拦截所有请求

/.do   拦截以“.do”结尾的请求

/index.jsp  拦截指定的jsp

/artery/form/*  拦截该目录下的所有请求

等等

拦截器,拦截请求类:

思路:比较“由登录页面登录后的session中属性值”和“通过url直接访问的session中的属性值”,找到其中不一样的,这就是判断依据。(判断依据可以参考登录逻辑类的代码)

import java.io.IOException;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

/**

* 主页面拦截,必须从登陆页面进入index

*/

public class LoginFilter implements Filter {

@Override

public void destroy() {

}

@Override

public void doFilter(ServletRequest servletRequest,

ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest) servletRequest;

HttpServletResponse response = (HttpServletResponse) servletResponse;

HttpSession hs = request.getSession();

if ("ture".equals(hs.getAttribute("isLogin"))) {//登录后,进入session查看session中的登录状态找到判断依据,

chain.doFilter(request, response);

return;

}

response.sendRedirect(request.getContextPath() + "/login.jsp");

}

@Override

public void init(FilterConfig arg0) throws ServletException {

}

}

登录逻辑代码:

import javax.crypto.spec.DESedeKeySpec;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import org.apache.struts.action.Action;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

import com.thunisoft.artery.module.config.ArteryConfigUtil;

import com.thunisoft.summer.component.crypto.CryptFactory;

import com.thunisoft.summer.component.crypto.CryptUtil;

import com.thunisoft.verification.bean.IdentityBean;

/**

* 登录页身份认证

* @author sunwenhao

*/

public class IdentityVerificationAction extends Action {

private final Log logger = LogFactory.getLog(IdentityVerificationAction.class);

private static final String IS_LOGIN_KEY = "isLogin";//在此处设置了登录的判断属性

private static final String IS_LOGIN_VALUE = "ture";//在此处设置了登录的属性的判断初始属性

private static final String SEC_STR="Hso2ThxNiSofHso2ThxNiSof";

@Override

public ActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response)

throws Exception {

IdentityBean identityInfo = (IdentityBean)form;

boolean success = verificationInfo(identityInfo);

//如果验证身份成功或者不使用登录页

if(success) {

request.getSession().setAttribute(IS_LOGIN_KEY, IS_LOGIN_VALUE);

return mapping.findForward("success");

}

request.setAttribute("msg", "用户名或密码错误");

return mapping.findForward("fail");

}

/**

* 是否登录

*

* @param request

* @param response

*

* @return

*/

public static boolean isLogin(HttpServletRequest request, HttpServletResponse response) {

String isLogin = (String)request.getSession().getAttribute(IS_LOGIN_KEY);

return IS_LOGIN_VALUE.equals(isLogin);

}

/**

* 验证登录信息

*

* @param request

* @param response

*

* @return

*/

private boolean verificationInfo(IdentityBean identityInfo) {

String user = identityInfo.getUsername();

String pwd = identityInfo.getPassword();

pwd=CryptUtil.encrypt(CryptFactory.ALGORITHM_3DES, pwd, SEC_STR);

String username = ArteryConfigUtil.getProperty("username");

String password = ArteryConfigUtil.getProperty("password");

try {

if(username.equals(user) && password.equals(pwd))

return true;

return false;

} catch (Exception e) {

logger.error("验证用户名和密码时出现错误.");

return false;

}

}

}

登录界面拦截java_java拦截通过url访问页面,必须通过登录页面访问目标页面相关推荐

  1. app登录界面背景 css_计算机毕业设计中Java web实现简登录页面(MyBatis+jsp+servlet+html+css+javascript)...

    点击上方"蓝字",关注我们. 本文利用MyBatis+jsp+servlet+html+css+javascript实现了一个简单的登录页面.对用户输入的用户名和密码就行校验,校验 ...

  2. python制作qq登录界面_Python制作一个仿QQ办公版的图形登录界面

    最近,QQ的办公版本--TIM进行了一次更新升级.本次更新升级大幅修改了界面的样式,看起来更加的清爽.简洁和高效了. 这种界面州的先生还是比较喜欢的,没有QQ那么花里胡哨,也比微信那些残缺的功能更加丰 ...

  3. Flask项目实战——7—(Redis数据库存储验证码信息、验证登录界面的表单信息、注册功能实现、登录实现)

    推荐一个API平台:聚合数据 1.Redis数据库存储验证码信息 保存手机验证码到Redis数据库 公有视图文件:apps/common/views.py # -*- encoding: utf-8 ...

  4. html登录界面设计代码_.NET 5 开发WPF - 美食应用登录UI设计

    Demo演示: 你的时间宝贵,不想看啰嗦的文字,可直接拉到文末下载源码! 1. 新建项目 站长开发环境: VS 2019企业版 16.70 .NET 5 Preview 5 .NET 5 WPF 项目 ...

  5. java web 登录界面案例_【JavaWeb】74:写一个登录案例

    今天是刘小爱自学Java的第74天. 感谢你的观看,谢谢你. 话不多说,开始今天的学习: Java又常被称之为后台开发. 什么叫后台呢?除了后台还有什么前台.前端后端-- 这些概念一大堆,还容易弄混. ...

  6. ios 仿电脑qq登录界面_iOS开发UI篇—模仿ipad版QQ空间登录界面

    iOS开发UI篇-模仿ipad版QQ空间登录界面 一.实现和步骤 1.一般ipad项目在命名的时候可以加一个HD,标明为高清版 2.设置项目的文件结构,分为home和login两个部分 3.登陆界面的 ...

  7. linux登录界面主题,Ubuntu 18.10(Cosmic Cuttlefish) 新登录界面亮相,主题为Yaru

    Ubuntu 18.10(Cosmic Cuttlefish)是流行的基于Linux的操作系统的下一个主要版本,目前正在开发中,承诺新功能和增强功能. 即将于今年秋季于2018年10月18日发布的即将 ...

  8. ios 仿电脑qq登录界面_iOS开发UI篇—模仿ipad版QQ空间登录界面-阿里云开发者社区...

    一.实现和步骤 1.一般ipad项目在命名的时候可以加一个HD,标明为高清版 2.设置项目的文件结构,分为home和login两个部分 3.登陆界面的设置 (1)设置第一个控制器和自定义的控制器类(登 ...

  9. php实现微信网页授权登录界面,微信公众号 前后端分离实现网页授权登录

    开发语言 后端:thinkphp5+easywechat3+php-jwt 前端:html 实现思路 需要授权登录页面,在页面加载完成时,判断是否登录,如果未登录访问后台授权登录链接 前端代码(主要j ...

最新文章

  1. Python3.5+SQL+Prometheus+Grafana报表/监控
  2. 【工具篇】接口测试神器 -- Postman 入门教程
  3. Web打印的解决方案之普通报表打印
  4. python 判断等于0_Python 条件语句介绍
  5. 火狐 url 乱码_在Firefox中查看URL作为工具提示
  6. hdu 2579 BFS
  7. 【经典回放】多种语言系列数据结构算法:基数排序
  8. 线性表-----队列
  9. python 0o_Python 中的比较:is 与 ==
  10. windows 小技巧
  11. 从 40% 跌至 4%,“糊”了的 Firefox 还能重回巅峰吗?
  12. C#OOP之一面向对象简介
  13. Android5.1.1 - APK签名校验分析和修改源码绕过签名校验
  14. 数组操作--微信小程序学习教程 1
  15. 下载腾讯视频(mp4 格式)
  16. 1000瓶水10只小白鼠问题-面试题目
  17. 单片机三角波c语言程序,基于51单片机的三角波发生器
  18. 庄子心得09:大道与自然
  19. java游戏俄罗斯方块_Java俄罗斯方块小游戏
  20. 三极管为什么可以放大电流?

热门文章

  1. mysql查找无根节点sql_SQL 双亲节点查找所有子节点的实现方法
  2. vue解构赋值_前端开发es6知识 模块化、解构赋值、字符串模板
  3. docker redis:6.2.6
  4. (进阶篇)Redis6.2.0 集群 哨兵模式_哨兵工作原理_02
  5. Flowable 数据库表结构 ACT_RE_PROCDEF
  6. 正则表达式中的开头和结尾
  7. Vue + Spring Boot 项目实战(三):使用IntelliJ IDEA快速生成 Vue.js 项目
  8. 牛客网SQL篇刷题篇(3-10)
  9. arp 华为 查看 路由器_华为路由器运行状态查看-路由器
  10. lamp中php怎么连接mysql_LAMP分离安装环境下,php无法连接mysql的问题