`

记住我 验证码

 
阅读更多

package cn.itcast.elec.util;

 

import java.io.IOException;

import java.net.URLDecoder;

import java.util.ArrayList;

import java.util.List;

 

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.Cookie;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

import cn.itcast.elec.domain.ElecUser;

 

public class SystemFilter implements Filter {

 

//存放需要放行的连接

List<String> list = new ArrayList<String>();

 

public void init(FilterConfig config) throws ServletException {

//定义系统在没有Session之前哪些连接需要放行

list.add("/index.jsp");

list.add("/image.jsp");

list.add("/system/elecMenuAction_home.do");

 

list.add("/error.jsp");

list.add("/system/elecMenuAction_logout.do");

}

 

public void doFilter(ServletRequest req, ServletResponse res,

FilterChain chain) throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest) req;

HttpServletResponse response = (HttpServletResponse) res;

//获取访问的路径path

String path = request.getServletPath();

//当访问的路径path包含index.jsp的时候,此时从Cookie中获取登录名和密码,并在index.jsp中进行显示,处理记住我的功能

this.forwardIndexPage(path,request);

 

//使用Session控制系统的粗颗粒度权限控制

//如果访问的路径path包含在定义的连接内,此时都需要放行

if(list.contains(path)){

chain.doFilter(request, response);

return;

}

//从Session中获取当前用户的信息

ElecUser elecUser = (ElecUser) request.getSession().getAttribute("globle_user");

if(elecUser!=null){

//使用页面地址栏输入访问的url,实现细颗粒度权限控制

//从Session中获取当前登录人所能够操作的url

List<String> urlList = (List<String>) request.getSession().getAttribute("globle_url");

if(urlList.contains(path)){

chain.doFilter(request, response);

return;

}

}

//重定向到登录页面

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

//跳转到错误页面,5秒钟后跳转到登录页面(友好)

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

}

 

 

 

public void destroy() {

 

}

 

/**当访问的路径path包含index.jsp的时候,此时从Cookie中获取登录名和密码,并在index.jsp中进行显示,处理记住我的功能*/

private void forwardIndexPage(String path, HttpServletRequest request) {

if(path.contains("/index.jsp")){

String name = "";

String password = "";

String checked = "";

Cookie [] cookies = request.getCookies();

if(cookies!=null && cookies.length>0){

for(int i=0;i<cookies.length;i++){

Cookie cookie = cookies[i];

if(cookie!=null && cookie.getName().equals("name")){

name = cookie.getValue();

//如果name中存在中文的话,对值进行解码

try {

name = URLDecoder.decode(name, "UTF-8");

} catch (Exception e) {

e.printStackTrace();

}

checked = "checked";

}

else if(cookie!=null && cookie.getName().equals("password")){

password = cookie.getValue();

}

}

}

//将3个值放置到request中

request.setAttribute("name", name);

request.setAttribute("password", password);

request.setAttribute("checked", checked);

}

 

}

 

 

 

 

}

 

分享到:
评论

相关推荐

    怎样实现“验证码+记住我”功能.zip

    在网站开发中,为了增强安全性,常常需要使用验证码来防止自动化的机器人操作,同时为了方便用户,也提供了“记住我”功能,让用户在一定时间内无需重复登录。本教程将详细介绍如何在项目中实现这两个功能。 验证码...

    asp.net登录带验证码和记住用户名功能

    asp.net登录案例,带验证码和记住用户名功能,点击验证码图片可更换验证码

    asp的20种验证码

    19. **视频验证码**:播放一段简短视频,用户需要记住其中的信息并在输入框中输入。 20. **行为分析验证码**:通过分析用户输入行为,如按键速度、停顿时间等,判断是否为真人。 以上就是20种ASP验证码的概览,每...

    获得验证码

    验证码是一种用于验证用户身份的安全机制,它通常由一串随机字符组成,图像显示形式常见,目的是...记住,验证码的目的是增加自动化攻击的难度,但不能完全防止,因此还需要结合其他安全措施,如限频、IP 黑名单等。

    SpringSecurity实现表单安全登录、图形验证的校验、记住我时长控制机制、第三方登录

    本主题将深入探讨如何使用SpringSecurity实现表单安全登录、图形验证码的验证、记住我功能的时长控制以及整合第三方登录。 **表单安全登录** 在SpringSecurity中,我们可以方便地配置表单登录。首先,我们需要定义...

    (ASP.NET)各式各样的验证码

    记住,验证码的设计应兼顾用户体验和安全性,避免过于复杂导致用户流失,同时防止恶意攻击。在编码过程中,确保遵循最佳实践,例如使用安全的哈希函数存储验证码答案,及时清理会话状态,以及考虑跨站脚本(XSS)和跨...

    含思验证码软件

    验证码图像载入后,这里会显示未经滤镜处理的原始验证码...请记住,只能保存一张图片样本。为什么要保存图片样本?因为时间长了,同一个验证码地址的图片样式就可能改变,原来的规则不适用了,如果没有图片样本,我们

    ASP中文验证码源码

    4. **session存储**:为了在用户提交验证码后进行验证,服务器需要记住生成的验证码。ASP中常用Session对象来存储会话数据,将验证码值存储在`Session("CheckCode")`中。 5. **用户输入验证**:当用户输入验证码后...

    验证码实现详细步骤

    这样,即使用户刷新页面,服务器也能记住已经生成的验证码。 7. **错误处理**:当验证码输入错误时,应向用户返回错误信息,并允许他们重新输入。 以上就是Java实现验证码的完整流程,包括了从生成到验证的每个...

    Android生成验证码图片

    这样可以防止用户记住或截图验证码,增加安全性。 4. **获取图片上的随机数**: 在生成验证码时,我们需要同时保存生成的随机数。当用户输入验证码时,我们可以将输入与保存的随机数进行比对,判断是否输入正确。 ...

    邮箱验证码

    通过邮箱验证码,服务提供商能够提供更安全、更可靠的服务,同时也提高了用户体验,因为用户不再需要记住复杂的密码或密钥。然而,这种方法也存在挑战,如垃圾邮件过滤、邮箱被劫持等问题,因此,持续改进验证机制和...

    Android-6位自定义手机验证码输入框

    在Android开发中,有时会遇到特定的用户界面需求,例如6位自定义手机验证码输入框。这个场景下,开发者需要创建一个特殊的...记住,良好的用户体验往往源于对细节的关注,而自定义View正是实现这种体验的重要工具。

    javaweb简单的一次性验证码

    4. **session管理**:为了验证用户输入的验证码,服务器需要记住生成的验证码。在Java Web中,我们通常使用HttpSession对象来存储与用户会话相关的数据。当用户提交验证码时,服务器会检查session中的值是否与用户...

    asp验证码实例

    4. **存储验证码值**:为了验证用户输入,服务器需要记住生成的验证码。这通常通过在会话(Session)对象中存储字符串来实现,因为会话在用户浏览器关闭前保持状态。 5. **用户交互**:用户看到验证码图像后,需要...

    实现验证码

    验证码是一种常见的网络安全机制,用于防止自动化程序(如机器人或爬虫)进行非法操作,比如注册、登录、提交...记住,安全是Web开发的重要组成部分,不断更新和优化验证码机制对于抵御日益复杂的网络攻击至关重要。

    ASP.net 带验证码的极其漂亮美观多项目可通用登陆界面。

    8. **安全性考虑**:除了基本的验证码功能,登录界面还可能包括其他安全措施,如密码复杂度检查、记住我选项(需谨慎使用以防止长期会话劫持),以及多因素身份验证。 总结来说,这个ASP.NET项目提供了一个既实用又...

    神经网络3.0——验证码识别代码和图片

    RNN可以在处理每个字符的同时记住前面的信息,这对于理解整个验证码至关重要。在实际应用中,我们可能还需要使用双向RNN来同时利用前后文信息。 在训练过程中,我们通常会采用数据增强技术来扩充训练集,如旋转、...

    winform模拟网站登录,有验证码

    记住,模拟登录时应尊重网站的使用条款,避免对服务器造成不必要的压力,否则可能会导致IP被封禁。 总的来说,使用C# Winform模拟网站登录涉及网络编程、HTML解析、图像处理和OCR识别等多个领域的知识,需要综合...

    免费短信验证码

    3. 便捷性:用户无需记住复杂的密码,只需接收和输入短信验证码即可完成验证。 4. 范围广泛:覆盖大部分拥有手机的用户,适用于各种类型的互联网应用。 三、短信验证码的实现技术 1. SMS SDK(软件开发工具包):...

    c#绘制验证码源码,随机生成

    验证码是一种常见的安全机制,用于防止自动化程序(如机器人)对网站进行恶意操作,例如注册、登录或发送垃圾邮件。在本篇文章中,我们将深入探讨如何使用...记住,平衡验证码的可读性和安全性是设计时的关键考虑因素。

Global site tag (gtag.js) - Google Analytics