当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

用户自动登录网站

发表于: 2015-05-13   作者:永夜-极光   来源:转载   浏览:
摘要: 1.目标:实现用户登录后,再次登录就自动登录,无需用户名和密码 2.思路:将用户的信息保存为cookie            每次用户访问网站,通过filter拦截所有请求,在filter中读取所有的cookie,如果找到了保存登录信息的cookie,那么在cookie中读取登录信息,然后直接

1.目标:实现用户登录后,再次登录就自动登录,无需用户名和密码

2.思路:将用户的信息保存为cookie

           每次用户访问网站,通过filter拦截所有请求,在filter中读取所有的cookie,如果找到了保存登录信息的cookie,那么在cookie中读取登录信息,然后直接跳过登录页面,如果没有找到,那么切换到登录页面

 

3.具体代码

    3.1登录界面

  

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html">
</head>

<body>
	<p>主页
	<p>
		<c:choose>
			<c:when test="${empty sessionScope.name}">
				<form name="x" action="<c:url value='/LoginServlet' />"
					method="post">
					name:<input type="text" name="name" /> 
					auto: 
					<input type="radio"name="auto" value="-1" checked="checked">不自动登陆
					<input type="radio" name="auto" value="1">1天 
					<input type="radio" name="auto" value="7">7天 <input type="submit" value="提交">
				</form>
			</c:when>
			<c:otherwise>
                  欢迎你:${name }<br>
				<a href="<c:url value='/LoginServlet'/>">退出</a>
			</c:otherwise>
		</c:choose>
</body>
</html>

 

   3.2filter过滤器

  

package s051301;
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.http.Cookie;
import javax.servlet.http.HttpServletRequest;


public class Filter implements javax.servlet.Filter{
	  private String encoding;
	public void init(FilterConfig con) throws ServletException {
	}


	public void doFilter(ServletRequest req, ServletResponse res,
			FilterChain chain) throws IOException, ServletException {
		System.err.println("dofilter service()");
		req.setCharacterEncoding("UTF-8");
		res.setContentType("text/html;charset=" + "UTF-8");
		
		HttpServletRequest request=(HttpServletRequest)req;
		Cookie[] cs=request.getCookies();
		
		if(cs!=null)
		{
			for(Cookie c:cs)
			{
				if(c.getName().equals("log")); //cookie怎么存的就怎么取
				{
				String value=c.getValue();  //存放cookie中的值,就是用户的名称
				request.getSession().setAttribute("name", value);
				break;
				}
			}
		}

		
		chain.doFilter(req, res);   
		
	}
	
	public void destroy() {
		
	}

}

 

  3.3Servlet

package s051301;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class LoginServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doPost(request, response);

	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");
       
		String name=request.getParameter("name");
		String auto=request.getParameter("auto");
		System.err.println(name);
		System.err.println(auto);

		if(!auto.equals("-1"))
		{
		    request.getSession().setAttribute("name", name);
			int day=Integer.parseInt(auto);
			int seconds=60*60*24*day;
			
			//声明cookie
			Cookie c=new Cookie("log",name);
			c.setMaxAge(seconds);
			c.setPath(request.getContextPath());
			
			response.addCookie(c);
		}



		//重定向到主页
		response.sendRedirect(request.getContextPath()+"/index.jsp");


	}

}

 

    3.4web.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">


	<filter>
		<filter-name>filter</filter-name>
		<filter-class>s051301.Filter</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>filter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>


	<servlet>
		<servlet-name>LoginServlet</servlet-name>
		<servlet-class>s051301.LoginServlet</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>LoginServlet</servlet-name>
		<url-pattern>/LoginServlet</url-pattern>
	</servlet-mapping>

</web-app>

 

用户自动登录网站

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
网站的自动登录一直都是有利于提高用户体验的功能,如果设计不好,也非常容易泄漏用户的账户信息。
如题,大家在使用各种网站时,为了更好的用户体验,网站往往会提供这两种功能之一,以便下次登录方
javaBean的代码 package bean; import java.io.Serializable; public class Admin implements Seria
域用户登录自动加载网络驱动器 在单位的服务器上我们会建立各个部门的共享文件夹,每次用户在新的计
因为有些程序在计划任务中设置开机就启动以后,当登录帐号时无法将已经运行的程序切换到前台进行操
网站用户单点登录系统解决方案 1 背景   在网站建设的过程中,多个应用系统一般是在不同的时期开
不知道大家发现没,sharepoint2013的网站集下面没有了切换用户登陆这个选项卡,这对于我们有时候要
1、查看系统事件,发现弹出如下的错误 2、根据上面的错误,我们很容易就可以判断是禁用了账户引起的
网站用户单点登录系统解决方案 1 背景   在网站建设的过程中,多个应用系统一般是在不同的时期开
我们在写灌水机器人、抓资源机器人和Web网游辅助工具的时候第一步要实现的就是用户登录。那么怎么用
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号