赖茅酒价格表,结合cookie和session,把登陆流程整理的清清楚楚,网易邮箱登录

结合cookie和session,把登陆流程收拾的清清楚楚

本文为小编原创文章,首发于Java识堂,一个高原咱们的父辈创,高保藏,有干货的微信大众号,一同生长,一同前进,欢迎重视

前语

本来同享过一篇文章,Java自定义注解及运用,其时为了能突出重点,直接在url中传了用户的所属人物,江苏吴江天气预报并写了一般的做法。加上最近看了一些人的简历,发现奇特的相似,都有相似商城的项目,为了不至于问些特别Low的问题,便总结了一下登录这个模块所触及的东西

单机Session

Http协议运用的是无状况衔接,这样会形成什么问题呢?看如下Demo

结合cookie和session,把登陆流程收拾的清清楚楚

测验



HttpServletRequest目标代表客户端的恳求,当客户端经过HTTP协议拜访效劳器时,HTTP恳求头中的一切信息都封装在这个目标中,当在一个恳求炅怎样读中时HttpServletRequest中的信息能够同享,而在不同的恳求中HttpServletRequest并不能同享,这样就会形成用户的确进行过登录操作,可是跳到购物车页面时发现并没有东西,因为应竹叶青酒用并不知道拜访这个页面的用户是谁

咱们能够用一个HttpSes原味内裤sion目标保存跨多个恳求的会话状况,上面的比如便是保存用户名,看下图了解为什么HttpSession能够跨恳求保存状况




对客户的第一个恳求,容器会生成一个仅有的会话ID,并经过呼应把它回来给客户。客户再在今后的每一华山论剑个恳求中发回这个会话ID。容器看到ID后,就会找到匹配的会话,并把这个会话与恳求相关

将上面代码改成如下,再测验



公然能保存会话状况了,客户和容器怎样交流会话ID信息呢?其实是经过cookie完成的


看上赖茅酒价格表,结合cookie和session,把登陆流程收拾的清清楚楚,网易邮箱登录面能保存会话的代码,咱们并没有对cookie进行操作啊,其实是容器简直会做cookie的一切作业,从最开端的Servlet开端讲这些操作是怎样完成的,先看一下Servlet履行进程

  1. 用户点击页面发送恳求->Web效劳器运用(如Apache)->Web容器运用(如tomcat)
  2. 容器创立两个目标HttpServletRequest和HttpServl蒜苔etResponse
  3. 依据URL找到ser英语翻译器vlet,并为恳求创立或分配一个线程,将恳求和呼应目标传递给这个servlet线程
  4. 容器调用Servlet的service()办法,依据恳求的不同类型,service()办法会调用doGet()和doPost()办法,假设恳求是HTTP GET恳求
  5. doGet()办法生成动态页面湿气重,并把这个目标塞到呼应目标里。容器有呼应目标的一个引证
  6. 线程完毕,容器把呼应目标装换为一个HTTP恳求,把它发回给客户,然后删去恳求和呼应目标

容器运用布置描绘文件把URL映射到Servlet ,一个Servlet能够有3个姓名,(1)用户知道的URL名,(2)布置人赖茅酒价格表,结合cookie和session,把登陆流程收拾的清清楚楚,网易邮箱登录员知道的内部名,(3)实践的文件名

参加运用Spring MVC时要在web.xml中装备如下内容

依据url-pattern->servlet-n赖茅酒价格表,结合cookie和session,把登陆流程收拾的清清楚楚,网易邮箱登录ame->servle杭州人才网t-class的三级映射联系,容器即可依据用户输入的URL找到对应性感美女相片的Servlet

从这个就能够看出其实Spring MVC结构其实在Servlet上面封装了一层,当咱们自己用Servlet编写程序时,能够从HttpServletRequest中获取HttpSession,如下

public class LoginServlet extends HttpServlet {

@Override
prot赖茅酒价格表,结合cookie和session,把登陆流程收拾的清清楚楚,网易邮箱登录ected vo赖茅酒价格表,结合cookie和session,把登陆流程收拾的清清楚楚,网易邮箱登录id doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

HttpSession session = req.getSession();
}

@Override
protected void doPost(Ht鼻子长痘tpServletReques赖茅酒价格表,结合cookie和session,把登陆流程收拾的清清楚楚,网易邮箱登录t req, Htt常笑健康苑pServl北京市etResponse resp) throws ServletException, IOException {

super.doPost(req, resp);
}
}

在呼应中发送一个会话cookie

HttpSession session = req.getSession();


咱们只需求写上述一行代码即可,来看看容器帮咱们做了哪些工作

  1. 树立一个新的HttpSession目标
  2. 生成仅有的会话ID
  3. 树立新的Cookie目标
  4. 把会话Id放到cookie中
  5. 在呼应中设置cookie

从恳求得到会话ID

HttpSession session = req.getSession();


与呼应生成会话ID和cookie时用的办法相同

if (请观世音菩萨求包括一个会话ID cookie) {
找到与该ID匹配的会话
} else if (没有会话Id cookie OR 没有与此会话ID匹配的当时会话) {
创立一个新会话
}


如上面用的办法,咱们并没有直接从HttpServletRequest 中获取HttpSession

public String login(HttpSession session, @RequestParam("username") String username)


能直接获取到HttpSession,其实是结构帮咱们履行了HttpSession session = req.getSession(),然后设置进来的。咱们能够设置session的过期时刻,以确保用户登录后长时刻不操作需求从头登录

分布式Session

当整个效劳是分布式的该怎样处理呢?用户在效劳器A上登录,结果在效劳器B上检查购物车信息,因为在A上登录,HttpSession存在A效劳器上,当拜访B效劳器上的购物车信息因为获取不到用户登录的HttpSession,就会认为用户没有登录,这种状况该怎样处理呢?

完成分布式Session有多种方法,这儿就介绍一下用Redis完成分布式Session,其实Spring Session项目就运用Redis完成Session同享的

了解了单机Session,分布式Session也不难了解,首要过程如下

  1. 用户登录今后,先生成相似于sessionId的仅有标识,咱们把它叫token
  2. new一个cookie,将token写到cookie傍边传递到客户端,并将以key=token,value=用户信息的hash放到redis中,当然cookie和这个hash都能够设置过期时刻
  3. 客户端在随后的拜访中效劳器从cookie中拿到这个token,依据这个token老婆十九岁去Redis中取到用户信息

当用户登出时只需删去key为token的hash,并且将cookie的最长时刻设置为0,从头放回HttpServletResponse即可,鉴于篇幅约束,就不写详细代码了

为什么要在密储组词码中加盐

直接存储

曾经体系存储暗码时都是相似如下方法

假设用户信息走漏,用户的账号安全将遭到要挟,参阅CSDN暗码走漏事情

加密存储

已然明文存储会有安全问题,那就加密存储,一般常用的加密算法是MD5和土偶兽SHA,当用户注册时,数据库中保存的暗码是加密后的暗码,当用户登录时先对登录的暗码进行MD5,然后和数据库中的暗码比对,正确则登录成功,失利则登录失利

认为这样就满足安全了?其实远远不行,有的人将各种暗码的MD5值都算出来,做成一个字典,前面说的走漏的CSDN的暗码便是一个很好的资料,这样就能够经过

走漏暗码的MD5值->MD5字典->原始的字符饼干串的映射联系,得到走漏的赖茅酒价格表,结合cookie和session,把登陆流程收拾的清清楚楚,网易邮箱登录暗码,针对这种状况,有2种做法,一种是将暗码屡次进行MD5,即对加密后的MD5值再次进行MD5,另一种便是加盐

加盐存储

因为盐值时随机生成的,咱们算一下破解一个用户的暗码需求多长时刻,假设数据库中暗码是如此生成的MD5(明文暗码+Salt),MD5的方法也被坏人知道了,假设坏人有600w个字典,得先对这些字典加Salt做一次MD5再匹配,并且还有或许匹配不出来,破解一个账号的本钱就这么高,并且盐值和暗码的方法进行MD5的方法也多种多样啊,Salt能够插中心,Salt倒序再进行MD5。当然还能够这样啊MD5(Salt[0] + 明文暗码 + Salt[5])。假如还觉得不行安全,还能够对加盐生成的MD5值再次MD5啊,次数由你定,这样简直是破解不了

转载原创文章请注明,转载自188bet金博宝注册_金博宝188滚球_188bet手机滚球,原文地址:http://www.hehe366.com/articles/3.html

下一篇:98,经心传电方案:支撑弱势,改进“蜗居”环境,自我介绍