登录界面拦截java_java拦截通过url访问页面,必须通过登录页面访问目标页面
在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访问页面,必须通过登录页面访问目标页面相关推荐
- app登录界面背景 css_计算机毕业设计中Java web实现简登录页面(MyBatis+jsp+servlet+html+css+javascript)...
点击上方"蓝字",关注我们. 本文利用MyBatis+jsp+servlet+html+css+javascript实现了一个简单的登录页面.对用户输入的用户名和密码就行校验,校验 ...
- python制作qq登录界面_Python制作一个仿QQ办公版的图形登录界面
最近,QQ的办公版本--TIM进行了一次更新升级.本次更新升级大幅修改了界面的样式,看起来更加的清爽.简洁和高效了. 这种界面州的先生还是比较喜欢的,没有QQ那么花里胡哨,也比微信那些残缺的功能更加丰 ...
- Flask项目实战——7—(Redis数据库存储验证码信息、验证登录界面的表单信息、注册功能实现、登录实现)
推荐一个API平台:聚合数据 1.Redis数据库存储验证码信息 保存手机验证码到Redis数据库 公有视图文件:apps/common/views.py # -*- encoding: utf-8 ...
- html登录界面设计代码_.NET 5 开发WPF - 美食应用登录UI设计
Demo演示: 你的时间宝贵,不想看啰嗦的文字,可直接拉到文末下载源码! 1. 新建项目 站长开发环境: VS 2019企业版 16.70 .NET 5 Preview 5 .NET 5 WPF 项目 ...
- java web 登录界面案例_【JavaWeb】74:写一个登录案例
今天是刘小爱自学Java的第74天. 感谢你的观看,谢谢你. 话不多说,开始今天的学习: Java又常被称之为后台开发. 什么叫后台呢?除了后台还有什么前台.前端后端-- 这些概念一大堆,还容易弄混. ...
- ios 仿电脑qq登录界面_iOS开发UI篇—模仿ipad版QQ空间登录界面
iOS开发UI篇-模仿ipad版QQ空间登录界面 一.实现和步骤 1.一般ipad项目在命名的时候可以加一个HD,标明为高清版 2.设置项目的文件结构,分为home和login两个部分 3.登陆界面的 ...
- linux登录界面主题,Ubuntu 18.10(Cosmic Cuttlefish) 新登录界面亮相,主题为Yaru
Ubuntu 18.10(Cosmic Cuttlefish)是流行的基于Linux的操作系统的下一个主要版本,目前正在开发中,承诺新功能和增强功能. 即将于今年秋季于2018年10月18日发布的即将 ...
- ios 仿电脑qq登录界面_iOS开发UI篇—模仿ipad版QQ空间登录界面-阿里云开发者社区...
一.实现和步骤 1.一般ipad项目在命名的时候可以加一个HD,标明为高清版 2.设置项目的文件结构,分为home和login两个部分 3.登陆界面的设置 (1)设置第一个控制器和自定义的控制器类(登 ...
- php实现微信网页授权登录界面,微信公众号 前后端分离实现网页授权登录
开发语言 后端:thinkphp5+easywechat3+php-jwt 前端:html 实现思路 需要授权登录页面,在页面加载完成时,判断是否登录,如果未登录访问后台授权登录链接 前端代码(主要j ...
最新文章
- Python3.5+SQL+Prometheus+Grafana报表/监控
- 【工具篇】接口测试神器 -- Postman 入门教程
- Web打印的解决方案之普通报表打印
- python 判断等于0_Python 条件语句介绍
- 火狐 url 乱码_在Firefox中查看URL作为工具提示
- hdu 2579 BFS
- 【经典回放】多种语言系列数据结构算法:基数排序
- 线性表-----队列
- python 0o_Python 中的比较:is 与 ==
- windows 小技巧
- 从 40% 跌至 4%,“糊”了的 Firefox 还能重回巅峰吗?
- C#OOP之一面向对象简介
- Android5.1.1 - APK签名校验分析和修改源码绕过签名校验
- 数组操作--微信小程序学习教程 1
- 下载腾讯视频(mp4 格式)
- 1000瓶水10只小白鼠问题-面试题目
- 单片机三角波c语言程序,基于51单片机的三角波发生器
- 庄子心得09:大道与自然
- java游戏俄罗斯方块_Java俄罗斯方块小游戏
- 三极管为什么可以放大电流?
热门文章
- mysql查找无根节点sql_SQL 双亲节点查找所有子节点的实现方法
- vue解构赋值_前端开发es6知识 模块化、解构赋值、字符串模板
- docker redis:6.2.6
- (进阶篇)Redis6.2.0 集群 哨兵模式_哨兵工作原理_02
- Flowable 数据库表结构 ACT_RE_PROCDEF
- 正则表达式中的开头和结尾
- Vue + Spring Boot 项目实战(三):使用IntelliJ IDEA快速生成 Vue.js 项目
- 牛客网SQL篇刷题篇(3-10)
- arp 华为 查看 路由器_华为路由器运行状态查看-路由器
- lamp中php怎么连接mysql_LAMP分离安装环境下,php无法连接mysql的问题