用户登录判断

用户登录验证一般分两种情况:第一种是前端处理,当我们访问登录接口认证成功之后,后台会直接将带有用户信息的token返回给前端,前端将token存进cookie或者localstorage中,当我们每次访问需要确认用户信息的接口时,我们会将token携带进header字段中进行请求,大致代码如下:
将token写进cookie:

this.setCookie('token', res.data.des.token, 15*24 / 24)(设置过期时长可以用于指定是否自动登录)
this.setCookie('userId', res.data.des.userId, 15*24 / 24)
localStorage.setItem('userMsg', msg)

setcookie的代码:

setCookie(cname, cvalue, exdays) {
      var d = new Date()
      d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000)
      var expires = 'expires=' + d.toGMTString()
      document.cookie = cname + '=' + cvalue + '; ' + expires + '; path = / ;'
},

每次访问须认证的接口之前,需要携带token,从cookie中取出来,再访问:

$post(
        webLogout, {},
        {
          'X-Auth0-Token':
            this.cookie !== '' ? this.cookie : this.tokenObj.token
        }
      ).then(res => {
        if (res.data.code == 0) {
          localStorage.removeItem('userMsg')
          this.deleteCookie('token')
          this.toAnotherRouter('login')
        } else {
          this.$message('该登录失效')
          this.toAnotherRouter('login')
       }
 });

或者我们可以在axios的请求拦截器中写到token:

instance.interceptors.request.use(
function(config) {
    let localUser
      let cookie = config.headers['X-Auth0-Token'] || ''
      const token = process.client ? (getCookie('token') !== '' ? getCookie('token') : getCookie('user')) : cookie
      config.headers["X-Auth0-Token"] = token
    return config
  },
  function(error) {
    // 对请求错误做些什么
    return Promise.reject(error)
  }
)

JWT(JSON Web Token)标准的认证跟一般的token认证的区别:
常见的 Token 是存储在数据库中的,在服务器端进行数据库查询,并比对 Token 是否合法。JWT 的意义是让 Token 和 Payload 加密后存储于用户端,服务端只需要解密即可,不需要查库即可获得类似存储于 Session 的数据(Payload),并且可信赖。

第二种是后台处理,用户登录后服务器生成一个对应session保存用户状态,将之保存在内存(或数据库),返回一个sessionId给客户端。浏览器在响应头提取将相关数据保存在cookie中,下次访问就将cookie放到请求头提交给服务器。通过这种方式,服务器就能识别用户的身份,从而判定用户是否有权限执行某些访问。

你可能感兴趣的:(用户登录判断)