注册和登录(关于Cookie)

前记

我将形貌一下上岸和注册之间发生了什么,将场景分为客户端和服务端,服务器是Node.JS,客户端是由JS写的

注册

1、注册要求

这是由客户端发送一个POST要求给服务端,个中包含了用户名和暗码

let $form = $('#signUpForm')
    $form.on('submit', (e)=>{
      e.preventDefault()
      let hash = {}
      let need = ['email', 'password', 'password_confirmation']
      need.forEach((name)=>{
        let value = $form.find(`[name=${name}]`).val()
        hash[name] = value
      })
      $form.find('.error').each((index, span)=>{
        $(span).text('')
      })
      $.post('/sign_up', hash)  
        .then((response)=>{
          console.log(response)
        }, (request)=>{
          let {errors} = request.responseJSON
          if(errors.email && errors.email === 'invalid'){
            $form.find('[name="email"]').siblings('.error')
              .text('邮箱花样毛病')
          }
        })
    })

2、服务器搜检

服务器须要搜检发送过来的用户名是不是注册过,假如注册过就返回失利,假如没有注册过就写入数据库

3、返回

写入数据库胜利,就将注册胜利返回给用户

登录

1、输入账号暗码

输入账号暗码,并用POST发送给服务器,能够搜检输入花样

let $form = $('#signInForm')
    $form.on('submit', (e) => {
      e.preventDefault()
      let hash = {}
      let need = ['email', 'password']
      need.forEach((name) => {
        let value = $form.find(`[name=${name}]`).val()
        hash[name] = value
      })
      $form.find('.error').each((index, span) => {
        $(span).text('')
      })
      $.post('/sign_in', hash)
        .then((response) => {
          window.location.href = '/'
        }, (request) => {
          alert('邮箱与暗码不婚配')
        })
    })

2、服务器搜检

猎取账号暗码,服务器查询数据库,看是不是有对应的账号存在

3、返回

假如有对应的存在就返回登录胜利,假如没有,就返回登录失利

Cookie

在上面的注册和登录过程当中会有一些题目,网站是怎样推断登录与否的,有些页面只需登录才能够接见,别的,怎样来确认登录的是谁,如许才不会搞杂沓,这时候就须要引入Cookie来处理这些题目

设置Cookie

在登录的一瞬间,服务器经由过程Set-Cookie,比方

        response.setHeader('Set-Cookie', `sign_in_email=${email}`)

通知浏览器,在这个用户上做了个标记,今后只需雷同的源的要求都邑带上这个Cookie,服务器Set-Cookie的是什么,浏览器Cookie就会是什么。

限期

Cookie并非永远有用的,就像游乐场的门票一样,你在游乐场去任何地方都须要这张门票,然则这个门票会有限期,这个限期能够本身设置,和封闭浏览器便失效的会话期Cookie差别,持久性Cookie能够指定一个特定的逾期时候(Expires)或有用期(Max-Age)。

response.setHeader('Set-Cookie', `id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT`)

当Cookie的逾期时候被设定时,设定的日期和时候只与客户端相干,而不是服务端。

特性

  1. 服务器经由过程Set-Cookie相应头来设置Cookie
  2. 浏览器获得Cookie后,每次要求都邑带上Cookie
  3. 服务器读取Cookie就晓得登录用户的信息
  4. Cookie存在电脑上的一个隐秘的文件位置
  5. Cookie并不平安,能够做假
  6. Cookie有用期的默许时候由浏览器决议,后端能够强迫设置
  7. 差别浏览器上的Cookie不能够互通

关于Cookie的更多信息,能够在MDN上检察

    原文作者:梁广铭
    原文地址: https://segmentfault.com/a/1190000016037678
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞