算是今天的学习笔记吧。。。
在点击登录输入用户名和密码后,当验证用户名和密码都正确且有正确返回值时,在LoginSvl中创建一个cookie保存此用户名和密码:
String unamepwd = user.getUname()+","+user.getPwd();
Cookie cookie=new Cookie("unamepwd",unamepwd);
cookie.setMaxAge(60*60*24*7);
response.addCookie(cookie);
创建一个过滤器,在下次登录时,当session中的user为空,则从cookie中获取上次保存的用户名密码,调用biz,通过biz调dao,验证cookie中保存的信息是否是否适用于此次登录,即验证数据库中密码或用户名是否改变,若改变,则清除此cookie。若没改变,则自动登录。
LoginFilter中的代码:
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request=(HttpServletRequest) req;
HttpServletResponse response=(HttpServletResponse) resp;
if(request.getSession().getAttribute("user") == null){
Cookie loginCookie=getLoginCookie(request, "unamepwd");
if(loginCookie != null){
String[] unamepwds=loginCookie.getValue().split(",");
UserBiz bbiz =new UserBiz();
User uuser=bbiz.login(unamepwds[0], unamepwds[1]);
if(uuser != null){
request.getSession().setAttribute("user", uuser);
}else{
Cookie cookie=new Cookie(loginCookie.getName(),null);
cookie.setMaxAge(0);
response.addCookie(cookie);
}
}
}
chain.doFilter(request, response);
}
private Cookie getLoginCookie(HttpServletRequest request,String cookieName){
Cookie strRet = null;
if(request.getCookies() != null){
Cookie[] cookies = request.getCookies();
for(int i=0;i<cookies.length;i++){
Cookie cookie = cookies[i];
String cm = cookie.getName();
if(cm.equals(cookieName)){
strRet = cookie;
break;
}
}
}
return strRet;
}
注:filter需要在web.xml中做响应配置。其中<url-pattern></url-pattern>中只能写/*,否则不能自动登录。
最后要在点击退出按钮时,清除cookie,以免其他用户无法登录:
LoginOutSvl中代码:
public void service(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
request.getSession().invalidate();
Cookie loginCookie = getLoginCookie(request, "unamepwd");
Cookie cookie=new Cookie(loginCookie.getName(),null);
cookie.setMaxAge(0);
response.addCookie(cookie);
request.getRequestDispatcher("MainSvl").forward(request,response);
}
private Cookie getLoginCookie(HttpServletRequest request,String cookieName){
Cookie strRet = null;
if(request.getCookies() != null){
Cookie[] cookies = request.getCookies();
for(int i=0;i<cookies.length;i++){
Cookie cookie = cookies[i];
String cm = cookie.getName();
if(cm.equals(cookieName)){
strRet = cookie;
break;
}
}
}
return strRet;
}
分享到:
相关推荐
本文实例为大家分享了jsp cookie+session实现简易自动登录的具体代码,供大家参考,具体内容如下 关闭浏览器只会使存储在客户端浏览器内存中的session cookie失效,不会使服务器端的session对象失效。 如果设置了...
在Web开发中,Cookie和Session是两种常见的用户身份验证...通过以上讲解,你应该对C#中如何使用Cookie和Session进行登录实现了深入的理解。实际项目中,应根据需求选择适合的用户认证方法,并确保遵循最佳安全实践。
通过使用 Session 和 Cookie,网站可以实现自动登录功能,提高用户体验。同时,在实现自动登录时,需要对密码进行加密,以确保密码的安全。在实际开发中,需要根据具体情况选择合适的实现方法。
虽然使用`Session`和`Cookie`实现自动登录可以极大地提高用户体验,但同时也需要特别注意安全性问题。例如,Cookie可能会被截获或篡改,因此建议对敏感信息(如密码)进行加密处理,并且限制Cookie的使用场景,避免...
在这个案例中,我们将探讨如何利用Cookie和Session来实现SSO,同时结合第三方社交登录,如微博,来增强用户体验。 ### Cookie与Session的基本原理 1. **Cookie**: 是服务器发送到用户浏览器并存储的一小块数据,...
综上所述,JavaWeb中的Session技术是实现用户自动登录的核心,它通过在服务器端存储用户信息并在客户端通过Cookie传递Session ID来保持用户状态。正确地配置和管理Session,能够为用户提供流畅的登录体验,同时也...
在此页面中,我们将检查用户的Cookie和Session,以实现自动登录。 ```jsp ;charset=UTF-8" pageEncoding="UTF-8" %> <!DOCTYPE html> String name = (String) session.getAttribute("username"); // ...
- **自动登录功能**:网站通常会提供“记住我”选项,即通过设置持久Cookie来保存用户的登录状态,以便下次访问时无需重新登录。 - **个性化推荐**:利用Cookie记录用户的浏览历史和喜好,为用户提供个性化的服务。 ...
本文将深入探讨Cookie如何实现自动登录,以及与之相关的源码和工具。 Cookie是Web服务器发送到用户浏览器并存储在本地的一小段数据,用于在后续请求中识别用户。它们是HTTP协议无状态特性的补充,因为HTTP本身不...
在实现自动登录的过程中,WinTest可能首先通过发送POST请求模拟用户登录,获取到SessionID,然后将SessionID保存到一个Cookie中。接着,当再次访问网站时,WinTest会检查Cookie中的SessionID,并将其附带在HTTP请求...
- 在实际应用中,通常结合使用Cookie和Session,Cookie用于存储Session ID,而Session存储用户详细信息,兼顾安全性和效率。 4. 安全考虑: - 防止Session劫持:使用HTTPS加密传输,防止Session ID被中间人截取。...
通过Cookie与Session机制,服务器能够识别并处理用户的状态信息,从而实现更丰富的交互体验。本文将详细解析Cookie与Session的工作原理、区别及应用场景。 #### 一、Cookie与Session的基本概念 **Cookie**:是一种...
例如,你可以使用`HttpServletResponse.addCookie(Cookie cookie)`添加Cookie,用`HttpServletRequest.getCookies()`获取客户端发送的所有Cookie。对于Session,可以通过`HttpServletRequest.getSession()`获取或...
在实际应用中,开发者通常结合使用Cookie和Session,比如用Cookie存储用户偏好,用Session管理用户登录状态。同时,为了增强安全性,可以定期刷新Session ID,或者设置合理的Session过期时间,避免长时间未操作的...
1. **Session 的创建**:每当一个新的用户访问网站时,服务器会自动创建一个 Session 对象,并通过某种方式(如 Cookie)将一个唯一的 Session ID 发送给客户端。 2. **Session 的使用**:客户端将这个 Session ID ...
Cookie 和 Session 是两种常见的用户身份验证和会话管理机制,它们在Web开发中扮演着重要角色,用于跟踪用户的在线状态和存储用户数据。下面将详细阐述它们的异同以及如何在集群环境中进行共享。 首先,Cookie 是一...
例如,登录验证可以先用Session存储用户信息,同时设置一个小型的Token型Cookie,作为Session的标识。这样即使用户关闭浏览器,再次打开时,服务器可以通过Cookie识别出之前的Session ID,实现“记住我”功能。 ...
- 如果用户的浏览器禁用了Cookie,或者某些情况无法使用Cookie,可以采用URL重写等技术来实现Session ID的传递。 - 例如,可以在URL中加入Session ID参数,或者通过隐藏表单字段等方式来传递Session ID。 3. **...