自动登录Cookie与Session问题 10C

** 第一次登录后,关闭浏览器,再重新打开浏览器,第二次进入之前登录后的页面,要重新登录,无法保存之前的用户数据。 **

连接的数据表 user:

图片说明

需要的jar包:
c3p0-0.9.1.2.jar
commons-beanutils-1.8.3.jar
commons-dbutils-1.4.jar
commons-logging-1.1.1.jar
jstl.jar
mysql-connector-java-5.1.7-bin.jar
standard.jar

// (login.jsp)页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
  <form method="post" action="LoginServlet">
    账号:<input type="text" name="username"><br>
    密码:<input type="password" name="password"><br>
          <!-- 可以让自动登录的 on 做判断! -->
          <input type="checkbox" name="auto_login"> 自动登录<br>
          <input type="submit" value="登录">
  </form>
</body>
</html>

//(index.jsp)页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

 <%@ taglib  prefix="c"  uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    这是首页 , 
    <!-- 判断域中有没有username的值 -->
    <c:if test="${not empty  userBean}">
        欢迎您, ${userBean.username }!
    </c:if>

    <c:if test="${ empty  userBean}">
        您好,请登录!
    </c:if>

</body>
</html>

//(UserBrean.java)页面

package com.bean.demo;

public class UserBean {
private int id ; 
private String username;
private String password;
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getUsername() {
    return username;
}
public void setUsername(String username) {
    this.username = username;
}
public String getPassword() {
    return password;
}
public void setPassword(String password) {
    this.password = password;
}
}

//(UserDao.java)页面

package com.dao.demo;
import java.sql.SQLException;
import com.bean.demo.UserBean;

public interface UserDao {

    /**
     * 执行登录,并且返回该用户的所有信息(Bean的数据)
     * @param user 执行登录的用户信息
     * @return 
     */
    UserBean login(UserBean user) throws SQLException;
}


//(UserDaoImpl.java)页面

package com.dao.impl;

import java.sql.SQLException;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import com.bean.demo.UserBean;
import com.dao.demo.UserDao;
import com.util.demo.C3P0Util;

public class UserDaoImpl implements UserDao {

    @Override
    public UserBean login(UserBean user) throws SQLException {

        QueryRunner runner = new QueryRunner(C3P0Util.getDateSource());
        String sql = "select * from user where username = ? and password = ?";
        //把sql数据返回到Bean类
        return runner.query(sql, new BeanHandler<UserBean>(UserBean.class) , user.getUsername() , user.getPassword());
    }
}


(C3P0Util.java)页面

package com.util.demo;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;


public class C3P0Util {

    /* public static void main(String[] args) {

                    getConn();
    }*/

    static ComboPooledDataSource dataSource = null;
    static {
                dataSource = new ComboPooledDataSource();
            }


/**
 * 获取 dataSource变量
 * @return dataSource
 */ 


public static DataSource getDateSource() {
            return dataSource;
    }  

/**
 * 获取C3P0连接池的连接
 * @throws SQLException
 */ 
 public static Connection getConn() throws SQLException {
    return dataSource.getConnection();
    }


 /**
    * 释放资源方法
    */
 public static void close(ResultSet rs,Statement stmt,Connection conn) {
    if(rs != null) {     
            try {
            rs.close();
            } catch (SQLException e) {
            e.printStackTrace();
                throw new RuntimeException(e);
            }
            } 

    if(stmt != null) {
        try {
            stmt.close();
                } catch (SQLException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
            }
        }

    if(conn != null) {
        try {
                conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                    throw new RuntimeException(e);
            }
        }
    }
}


   //(c3p0-config.xml)页面,连接数据库工具的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
    <default-config>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/conn</property>
        <property name="user">root</property>
        <property name="password">root</property>
        <property name="driverClass">com.mysql.jdbc.Driver</property>
  </default-config>
</c3p0-config> 



      //(CookieUtil.java)页面,Cookie工具类
package com.util.demo;
import javax.servlet.http.Cookie;

public class CookieUtil {
public static Cookie findCookie(Cookie [] cookies , String name){
    if(cookies != null){
     for (Cookie cookie : cookies) {
       if(name.equals(cookie.getName())){
            return cookie;
     }
    }
   }
        return null;
  }
}



  //(LoginServlet.java)页面
package com.servlet.demo;
import java.io.IOException;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.bean.demo.UserBean;
import com.dao.demo.UserDao;
import com.dao.impl.UserDaoImpl;

@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

try {

        String userName = request.getParameter("username");
        String password = request.getParameter("password");
//如果提交的时等于null,说明没选定自动登录,等于on时就是选择自动登录
        String autoLogin = request.getParameter("auto_login");

            UserBean user = new UserBean();
            user.setUsername(userName);
            user.setPassword(password);

            UserDao dao = new UserDaoImpl();
            UserBean userBean = dao.login(user);

            if(userBean != null){

            //页面提交上来的时候,判断on,是否选择了自动登录
            if("on".equals(autoLogin)){

                //发送cookie给客户端,cookie的值是账号和密码,#号为分割符          
                Cookie cookie = new Cookie("auto_login", userName+"#aa#"+password);
                cookie.setMaxAge(60*60*24*7);//7天有效期
                cookie.setPath("/AutoLoginDemo");
                //cookie.setPath(request.getContextPath()); //得到的是localhoust后面的目录名字
                response.addCookie(cookie);

            }

                /*用户再一次访问登录过后的首页,不需要从新登录*/
                    //成功了,创建Session对象,保存数据,发送到首页
                                request.getSession().setAttribute("userBean", userBean);
                                response.sendRedirect("index.jsp");
            }else{

                //不成功...
                request.getRequestDispatcher("login.jsp").forward(request, response);
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }
}

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

        doGet(request, response);
    }
}



   //(AutoLoginFilter.java)页面
package com.filter.demo;
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.annotation.WebFilter;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import com.bean.demo.UserBean;
import com.dao.demo.UserDao;
import com.dao.impl.UserDaoImpl;
import com.util.demo.CookieUtil;

@WebFilter("/AutoLoginFilter")
public class AutoLoginFilter implements Filter {

    public void destroy() {

    }

    public void doFilter(ServletRequest req, ServletResponse response, FilterChain chain) throws IOException, ServletException {

        try {
            HttpServletRequest request = (HttpServletRequest) req;

            //先判断,现在session中还有没有那个userBean.
            UserBean userBean = (UserBean) request.getSession().getAttribute("userBean");
            //session还有效。
            if(userBean != null){
                chain.doFilter(request, response);
            }else{
                //代表session失效了, 需要找cookie。                

                //1. 来请求的时候,先从请求里面取出cookie , 但是cookie有很多的key-value
                Cookie[] cookies = request.getCookies();
                //2. 从一堆的cookie里面找出我们以前给浏览器发的那个cookie
                Cookie cookie = CookieUtil.findCookie(cookies, "auto_login");

                //等于null代表第一次来
                if(cookie  == null){
                    chain.doFilter(request, response);
                }else{

                    //不是第一次登录, 表明用户现在已经登录过,取出Cookie的值帮用户登录          

                    String value = cookie.getValue();
                    String username = value.split("#aa#")[0];
                    String password = value.split("#aa#")[1];

                    //完成登录
                    UserBean user = new UserBean();
                    user.setUsername(username);
                    user.setPassword(password);

                    UserDao dao = new UserDaoImpl();
                    userBean = dao.login(user);

                    //使用session存这个值到域中,方便下一次未过期前还可以用。
                    request.getSession().setAttribute("userBean", userBean);

                    chain.doFilter(request, response);
                }
            }
        } catch (Exception e) {
        //异常这里也需要放行,不然出现异常会导致用户的界面出现空白
            e.printStackTrace();
            chain.doFilter(req, response);
        }
    }


    public void init(FilterConfig fConfig) throws ServletException {
//      有可能在这里面执行10分钟的耗时
    }

}


   //(web.xml)页面
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
    <display-name>AutoLoginDemo</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
    <servlet>
        <description></description>
        <display-name>LoginServlet</display-name>
        <servlet-name>LoginServlet</servlet-name>
        <servlet-class>com.servlet.demo.LoginServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/LoginServlet</url-pattern>
    </servlet-mapping>
    <filter>
        <display-name>AutoLoginFilter</display-name>
        <filter-name>AutoLoginFilter</filter-name>
        <filter-class>com.filter.demo.AutoLoginFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>AutoLoginFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

1个回答

cookie.setPath("/AutoLoginDemo");

你确定你的WebApp的名字叫做AutoLoginDemo吗?

package com.bean.demo;

这里看起来是 demo

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于session和cookie的应用场景分别是那些?

就我知道的 cookie大多应用在 保存用户信息 方便下次自动登陆什么的 但session的话 就只知道 他是个域范围(request和application一样的用法)

使手机浏览支持session的解决方式

不依赖于cookie的手机session解决方案 用户登录成功后,去到主页面,点击进去另一个页面,自动跳回到登录页面要登录,有可能是什么原因造成呢?用户信息我是在用户登录成功后存在session的,这是一个手机端的网站,估计是有些手机不支持session,造成的,请问有什么方法可以解决这个问题吗?

java不用session,怎么保持登陆状态

通过上网查询,很多人是这样一种思想, 1,登陆 获取客户端传来的用户名密码,连接数据库验证,成功--把登陆信息保存在cookie中,设置cookie的时间 2,写拦截器,在访问用户中心时,拦截下请求,看看是不是cookie是不是存在的,如果存在,取出用户信息,在做一次验证。如不在,则跳转到登陆页面。 这种思路每次访问都要去取cookie中的用户信息去校验,性能会收到影响吧 ,如果不进行校验的话,要是cookie被篡改,那样用户数据又正确 大神,有没有什么好的建议啊?

微信登录的页面跳转问题

<hr/> 再更新一下: 1、 因为一些原因,我的网页进行微信授权登录后的回调统一都是一个url(称为A) 2、 现在有一个url(称为B),如果用户未登录访问,那么需要用户进行微信的授权登录,然后我希望能够跳转到(A)之后,能够获取(B)从而再次跳转回(B), 3、 通过session和cookie是不可以的,因此微信网页登录授权跨域跳转过,cookie不靠谱 <hr/> <hr/> 更新一下:下面表述可能比较混乱,总结一下问题。 **如何保存微信登录前的url,使得能够在回调url中获得该url,并在此跳转回该url。** <hr/> PHP基于公众号开发的网站中,使用微信登录之后会有一个回调的URL,比如http://loginurl 但是手机上进行微信登录的跳转之后都会跳刀http://loginurl这个回调的url上 想问一下,如何保存跳转之前的url(距离为http://preurl),使得在微信登录跳转到回调url后能够获取这个url并再次跳转会之前的url(http://preurl)? 我试过session和cookie,session和cookie状态不会保留,毕竟跳转了。 想请教一下有什么比较好的解决办法?

session和cookie的问题

今天突然想到一个问题: 两个不同的域名,指向同一个服务器,打开浏览器,用两个标签页访问这两个域名,session和cookie相同吗? 可以这么理解:我在域名1登陆,标签页不关闭;再开一个标签页,在打开域名2,会不会自动登录?

session和cookies在ASP.net中同时使用 举例

session和cookies在ASP.n中同时使用 举例 我不知道该怎么同时使用 我现在弄了个 自动判断浏览器语言 和可以自己选择语言 也可以根据cookies保存的 就是现在想联合session一起使用

寻找解决方案来延长PHP Session登录脚本的时间

<div class="post-text" itemprop="text"> <p>I'm looking for a solution me and my freelancer scripter cannot fix haha!</p> <p>After 25 minutes of inactivity my reservation script log-out automatically and gives me a header already send error on line 722. I need to login again to proceed. I cannot refresh the page but must go manually to index.php to log-in.</p> <p>I searched the stack overflow forum for solutions and I found an answer to change the settings in the php.ini. I did this but stil it doesn't work (php info shows now the correct value of 31536000s on local and master). I also changed the PHP session time in the reervation script without any results.. </p> <p>Other thing I tried I found on the forum is a .htaccess file but also doesn't work. </p> <p>What can I try more?</p> <p><b>PHP.ini</b></p> <pre><code>session.gc_maxlifetime = 31536000 session.cookie_lifetime = 31536000 </code></pre> <p><b>Variables.php</b></p> <pre><code>if (session_id() === '') { session_set_cookie_params(172800, APP_BASE_PATH, $_SERVER['SERVER_NAME'], false, true); session_start(); } if (!headers_sent()) { $params = session_get_cookie_params(); setcookie(session_name(), session_id(), time() + 172800, $params['path'], $params['domain'], $params['secure'], $params['httponly']); } </code></pre> <p><b>Line 722 of my script</b></p> <pre><code>function verify_logged_in() { if( ! isset( $_SESSION['logged_in'] ) || $_SESSION['logged_in'] !== true ) { unset( $_SESSION['logged_in'] ); unset( $_SESSION['last_used'] ); unset( $_SESSION['user_id'] ); unset( $_SESSION['user_type'] ); unset( $_SESSION['user_name'] ); unset( $_SESSION['full_name'] ); unset( $_SESSION['email'] ); unset( $_SESSION['token'] ); session_write_close(); $_SESSION[ 'message' ] = 'U dient opnieuw in te loggen.'; header( 'Location: index.php' ); exit(); } else { $_SESSION['last_used'] = date( DATE_TIME_FORMAT ); } </code></pre> <pre><code>&lt;?php require_once 'functions.php'; $lang = "en"; if (isset($_SESSION['language'])) { $lang = $_SESSION['language']; } require_once "lang.".$lang.".php"; verify_logged_in(); verify_user_level(['Editor', 'Moderator']); </code></pre> </div>

spring cloud关于session共享问题

在使用spring cloud时,用zuul部署api gateway,后端服务通过网关自动发现寻找。 想利用spring session将session对象共享在redis中。 问题是,每次通过api gateway访问的时候,在下面应用中获取的sessionId每次都不一样。(同一个页面刷新访问) 我在api gateway配置: zuul: sensitive-headers: Cookie,Set-Cookie 但始终没有效果。请教各位大神!! PS:在没有通过api gateway访问各个应用的时候,已经可以共享session,每次获取的sessionId都一致。

mvc项目 session过期时如何跳转到登录页面

用mvc5做的一个项目,重新写了过滤器,当session过期时,点击跳转到别的页面会跳转到登录页,,可是点击页面上面的按钮,如第一张图的查看按钮,只会提示object,如第二张图,虽然也走了哪个过滤器里面的方法,可是根本没有用。。求帮忙。 ![图片说明](https://img-ask.csdn.net/upload/201710/16/1508122624_340219.png)![图片说明](https://img-ask.csdn.net/upload/201710/16/1508122635_207553.png)

springboot项目集成springsession+redis后,刷新页面会导致session丢失

项目中集成了springsession,用redis实现session共享,登录的时候把session存到redis中,之后的请求在拦截器中获取session来判断,但是每次刷新页面或者新弹出页面的时候,请求中的cookie和session都会为null。在谷歌浏览器没有问题。 ``` DefaultCookieSerializer cookieSerializer = new DefaultCookieSerializer(); cookieSerializer.setSameSite(null) ``` 各种百度查询和查看了部分源码,设置了这个之后就可以,但是这个会有不安全,有人可以解释一下原因么?

thinkphpv5.0怎么在关闭浏览器即删除session或存有sessionid的cookie?

thinkphp框架v5.0,怎么在关闭浏览器即删除session或存有sessionid的cookie?

spring security怎么实现浏览器关闭session也关闭 最好详细点 ,谢谢

<!-- max-sessions:允许用户帐号登录的次数。范例限制用户只能登录一次。exception-if-maximum-exceeded:默认为false 此值表示:用户第二次登录时,前一次的登录信息都被清空。当exception-if-maximum-exceeded="true"时系统会拒绝第二次登录--> <session-management> <concurrency-control error-if-maximum-exceeded="true" max-sessions="1" /> </session-management> <!-- invalidate-session:指定在退出系统时是否要销毁Session。logout-success-url:退出系统后转向的URL。logout-url:指定了用于响应退出系统请求的URL。其默认值为:/logout。 --> <logout invalidate-session="true" logout-success-url="/login.jsp" logout-url="/logout" /> 但是直接关闭浏览器,不能销毁session,再登陆这个用户,会提示用户已登陆,只能等session过期, 有没有什么办法可以解决这个问题?

Spring-session服务概率性session乱窜怎么解决?

# 环境 SpringBoot 2.0.4 SpringSession 2.0.5 Session存在Redis 两个服务,分别跑在两台服务器上 都使用的Chrom浏览器,版本可能不一样 项目中都是在方法里getSession()未曾使用静态变量持有session 客户端->Apache->服务 获取Session统一使用这种方式: ``` java Application.getSession(); ``` Application: ``` java public class Application{ // ... public static HttpServletRequest getRequest() { return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); } public static HttpSession getSession() { return getRequest().getSession(); } // ... } ``` # 现象 在登录的用户中无规律的某个在线用户A突然就变成了另一个在线用户B, 用户A登录时使用PC1,用户B登录时使用PC2, 也就是说PC1上登录的用户突然从用户A变成了用户B,并且能以用户B的身份正常操作 通过后台日志发现,变化后,PC1对应的sessionId已经变成了用户B登录时的sessionId,但是requestHeader中携带的cookie值没变。 如下,sessionId和cookie中的SESSION的值不一样了(spring-session默认cookie中SESSION的值是sessionId使用Base64编码之后的,此处说的是解码后比较) ``` java public void heartbeat(){ // ... String sessionId = Application.getSession().getId(); String cookie = Application.getRequest().getHeader("cookie"); // ... } ``` # 暂时处理办法 目前使用前后端结合检测到session串了之后自动T下线 ps: 如果我这边表达的看不太懂,也可以看这两篇,现象是一样的 [率性的 session 乱串](https://www.iteye.com/problems/78097) [session串了,该怎么解决](https://www.iteye.com/problems/20459)

在Filter中访问Cookie的问题

我想做自动登录。 在用户登录的Servlet里已经将相关信息保存至cookie了,磁盘上也确实有。但是在Filter里查找cookie时,却发现只能找到名字为JSESSIONID的cookie,而我保存的名字叫name的cookie却找不到。我在用户登录的Servlet里也写了读取Cookie的代码,运行时一切正常。 我的doFilter()方法的开头部分如下: public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) resp; Cookie[] cookies = request.getCookies(); System.out.println("Enter AdminAutoLoginFilter"); System.out.println("cookies is null? " + (cookies == null)); if (cookies != null) { for (int i = 0; i < cookies.length; i++) { System.out.println("cookies[" + i + "].getName() :" + cookies[i].getName()); if ("name".equals(cookies[i].getName())) { HttpSession session = request.getSession(); if (session.getAttribute("webbook.admin.name") == null || "".equals(session .getAttribute("webbook.admin.name"))) { session.setAttribute("webbook.admin.name", cookies[i] .getValue()); System.out.println("Find cookie!"); response.sendRedirect(request.getContextPath() + "/admin/operate/servlet/manage"); } break; } } } chain.doFilter(req, resp); } 登录成功,控制台里看到的是: Enter AdminAutoLoginFilter cookies is null? false cookies[0].getName() :JSESSIONID 但是新打开一个浏览器窗口,再申请登录页面,控制台输出就为: Enter AdminAutoLoginFilter cookies is null? true 为什么啊?! 郁闷死了,我已经折腾好几天了! [b]问题补充:[/b] To: playfish 感谢你的回答。 目前我处理自动登录的流程与你推荐的博文是一样的,只是少了很多验证、加密的内容。但是即使这么简单,还是没有出来。原因还是我上面说的,明明有名字叫name的cookie,在Servlet里能找到,但在Filter里就是找不到!能不能麻烦你再细细读读我的代码? To All: 恳请大家帮助! [b]问题补充:[/b] 我在用户登录的Servlet里这样产生cookie的: Cookie newCookie = new Cookie("name", name); newCookie.setMaxAge(60*3); response.addCookie(newCookie); 在Filter里这样读: Cookie[] cookies = request.getCookies(); String cookieValue = null; if(cookies != null) { for(int i = 0; i < cookies.length; i ++) { String cookieName = cookies[i].getName(); System.out.println("Found " + cookieName + "!"); if("name".equals(cookieName)) { cookieValue = cookies[i].getValue(); session.setAttribute("webbook.admin.name", cookieValue); String url = request.getRequestURI(); if("login.jsp".equals(url.lastIndexOf('/'))) { response.sendRedirect(request.getContextPath() + "/admin/operate/servlet/manage"); } break; } } } 怎么就不行了?!

Java 关于Cookie的蛋疼问题

<p>最近让做一个自动登录的功能,于是google,学习了下他人的代码,感觉不是很难;但还是遇到了一些小挫折,很叫人蛋疼!也没法搞定了,只能发帖呼救了~</p> <p>我所实现的自动登录功能也就三步:</p> <p>①在登录方法的判断密码的if分支中,创建cookie如下:</p> <p> </p> <p> </p> <pre name="code" class="java">Cookie cookie = new Cookie("usr", username); cookie.setMaxAge(24*60*60*15); response.addCookie(cookie); Cookie cookie = new Cookie("pw", pwEncrypt); cookie.setMaxAge(24*60*60*15); response.addCookie(cookie);</pre> <p> ②在访问首页的方法中,搜索cookie如下:</p> <p> </p> <p> </p> <pre name="code" class="java">String username = ""; String password = ""; Cookie[] cookies = request.getCookies(); if (cookies != null) { for (Cookie cookie : cookies) { if ("usr".equals(cookie.getName())) { username = cookie.getValue(); } if ("pw".equals(cookie.getName())) { password = cookie.getValue(); } if (!"".equals(username) &amp;&amp; !"".equals(password)) { //将用户对象放入session中 } } }</pre> <p> ③退出方法中,删除cookie如下:</p> <p> </p> <p> </p> <pre name="code" class="java">Cookie[] cookies = request.getCookies(); if (cookies != null) { for (Cookie cookie : cookies) { if ("urs".equals(cookie.getName())) { cookie.setValue(""); cookie.setMaxAge(0); response.addCookie(cookie); } if ("pw".equals(cookie.getName())) { cookie.setValue(""); cookie.setMaxAge(0); response.addCookie(cookie); } } }</pre> <p> </p> <p>其中,①②步都木问题,问题就出在第③步,无论怎样都无法删除cookie(最后也只能在ie的Internet选项中删了)。点击“退出”按钮时,关闭浏览器,再打开,首页依然显示该用户为登录状态,很是纠结!!是代码问题,还是我浏览器设置问题?或者是其他什么原因?</p> <p> </p>

flask session.clear() 清除后,第二次请求过来又带上了?

现在做的是登陆校验,会把一些敏感信息写session,session放在cookie里,,现在前端点击退出后,后台会清除session 后台的退出视图:主要就是清session信息 session.clear() return {"code":200} 断点到这个return,查看session清除情况 session是空的 但第二次同一条请求过来 又带上了原来写在session里面的数据 这是怎么回事?? 难道 session.clear() 只是清除服务端的? 浏览器本地cookie里的session 必须 要构造响应头后,del_cookie("session") 后 返回给前端 才能清除??? 这有点不合理啊

使用cURL和Save Sessions登录

<div class="post-text" itemprop="text"> <p>index.php</p> <pre><code>&lt;?php if($_POST) { $url = 'http://127.0.0.1/login.php'; $socks = '127.0.0.1:9999'; $fields = 'password=' . $_POST['captcha'] . ''; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22"); //curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5); //curl_setopt($ch, CURLOPT_PROXY, $socks); //curl_setopt($ch, CURLOPT_INTERFACE, 'eth0:12'); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt"); curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); curl_setopt($ch, CURLOPT_TIMEOUT, 3600); $result = curl_exec($ch); curl_close($ch); } ?&gt; &lt;form action="" method="POST"&gt; Password &lt;input type="text" name="password" value="" /&gt; &lt;input type="submit" value="Login" /&gt; &lt;/form&gt; </code></pre> <p>login.php</p> <pre><code>&lt;?php session_start(); $_SESSION["TestSession"] = 1; setcookie("TestCookie", 1, time() + 3600); if($_POST) { file_put_contents("login.txt", serialize($_POST)); } echo 'OK'; ?&gt; </code></pre> <p>After I run index.php and submit the form with my password, it's being saved to <code>login.txt</code> but in <code>cookie.txt</code> I don't have <code>TestCookie</code> or <code>TestSession</code> saved.</p> <p>I'll be thankful for any help, as I really don't understand where the problem is.</p> </div>

求一个android用session保持登陆的demo

我是初学者,在网上找了很少但是具体不会用,急求 所以希望有个demo,有javaWeb后台和android客户端代码

求大神告知post请求怎么携带cookie

API需要登录账号后携带cookie使用 求大神告知 怎么携带cookie实用!!!! 谢谢!!!

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

删库了,我们一定要跑路吗?

在工作中,我们误删数据或者数据库,我们一定需要跑路吗?我看未必,程序员一定要学会自救,神不知鬼不觉的将数据找回。 在 mysql 数据库中,我们知道 binlog 日志记录了我们对数据库的所有操作,所以 binlog 日志就是我们自救的利器。 接下来就来开启程序员自救之路。 想要自救成功,binlog 这把利器一定要好,在自己之前,我们一定要确定我们有 binlog 这把利器,以下就是确保有 bi...

再不跳槽,应届毕业生拿的都比我多了!

跳槽几乎是每个人职业生涯的一部分,很多HR说“三年两跳”已经是一个跳槽频繁与否的阈值了,可为什么市面上有很多程序员不到一年就跳槽呢?他们不担心影响履历吗? PayScale之前发布的**《员工最短任期公司排行榜》中,两家码农大厂Amazon和Google**,以1年和1.1年的员工任期中位数分列第二、第四名。 PayScale:员工最短任期公司排行榜 意外的是,任期中位数极小的这两家公司,薪资...

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

华为初面+综合面试(Java技术面)附上面试题

华为面试整体流程大致分为笔试,性格测试,面试,综合面试,回学校等结果。笔试来说,华为的难度较中等,选择题难度和网易腾讯差不多。最后的代码题,相比下来就简单很多,一共3道题目,前2题很容易就AC,题目已经记不太清楚,不过难度确实不大。最后一题最后提交的代码过了75%的样例,一直没有发现剩下的25%可能存在什么坑。 笔试部分太久远,我就不怎么回忆了。直接将面试。 面试 如果说腾讯的面试是挥金如土...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

外包程序员的幸福生活

今天给你们讲述一个外包程序员的幸福生活。男主是Z哥,不是在外包公司上班的那种,是一名自由职业者,接外包项目自己干。接下来讲的都是真人真事。 先给大家介绍一下男主,Z哥,老程序员,是我十多年前的老同事,技术大牛,当过CTO,也创过业。因为我俩都爱好喝酒、踢球,再加上住的距离不算远,所以一直也断断续续的联系着,我对Z哥的状况也有大概了解。 Z哥几年前创业失败,后来他开始干起了外包,利用自己的技术能...

现代的 “Hello, World”,可不仅仅是几行代码而已

作者 |Charles R. Martin译者 | 弯月,责编 | 夕颜头图 |付费下载自视觉中国出品 | CSDN(ID:CSDNnews)新手...

!大部分程序员只会写3年代码

如果世界上都是这种不思进取的软件公司,那别说大部分程序员只会写 3 年代码,恐怕就没有程序员这种职业。

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

HTTP与HTTPS的区别

面试官问HTTP与HTTPS的区别,我这样回答让他竖起大拇指!

程序员毕业去大公司好还是小公司好?

虽然大公司并不是人人都能进,但我仍建议还未毕业的同学,尽力地通过校招向大公司挤,但凡挤进去,你这一生会容易很多。 大公司哪里好?没能进大公司怎么办?答案都在这里了,记得帮我点赞哦。 目录: 技术氛围 内部晋升与跳槽 啥也没学会,公司倒闭了? 不同的人脉圈,注定会有不同的结果 没能去大厂怎么办? 一、技术氛围 纵观整个程序员技术领域,哪个在行业有所名气的大牛,不是在大厂? 而且众所...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

终于懂了TCP和UDP协议区别

终于懂了TCP和UDP协议区别

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

立即提问
相关内容推荐