token做自动登录

token

身份验证 token

  • 前端自动登录
  • OpenSSL + perl软件安装: https://blog.csdn.net/sunhuansheng/article/details/82218678
    • OpenSSl 、 Perl这个软件安装无要求,一路next
    • 先装Perl,在装OpenSSl
    • 检查你的环境变量中的系统变量是否有这两个软件的启动路径
  1. 先构建前端页面,发送请求
    $('button').on('click',function () {
    $.ajax({
      url: 'http://localhost:3000/login',
      method: 'POST',
      data: {
        username: $('#username').val(),
        password: $('#password').val(),
        token: localStorage.getItem('token')        // 当第一次发送登录请求式,我们携带一个token参数,就是要告诉后端,我是第一次登录,我需要token字符做后期自动登录
      },
      success: function ( res ) {
       if ( res ) {
        const result = JSON.parse( res )
        localStorage.setItem('token',result.token )
        location.href = "./index.html"
       }
      }
    })
    

})

2. 使用express搭建路由写接口,以模块化形式导出,创建路由中间件
3. 解决跨域问题 res.setHeader('A-C-A-O','*'),req.body得到前端发送的数据
4. 新建rsa文件夹创建两个文件,一个私钥一个公钥。通过私钥产生token,通过公钥解密token。
```js
// 1.产生公钥和私钥
// 产生私钥  openssl genrsa -out ./private_key.pem 1024    1024 代表私钥长度
// 产生公钥  openssl rsa -in ./private_key.pem -pubout -out ./public_key.pem

  1. 通过文件系统把私钥和公钥里面的内容读出来
 const privateKey = fs.readFileSync( path.join( __dirname,'../rsa/private_key.pem') )

  const publicKey = fs.readFileSync( path.join( __dirname, '../rsa/public_key.pem' ))
  1. 通过引入jwt这个工具,将用户信息和私钥结合进行加密:
    • $ npm install jaonwebtoken -s
         // 通过jwt将用户名和私钥结合 ,然后在通过RS256加密算法,输出最终的token
    
      const token = jwt.sign( username, privateKey, { algorithm: 'RS256' })
      
      
      /*   
      通过public进行解密
      const newToken = 'eyJhbGciOiJSUzI1NiJ9.MTE.SrtxG9-mwK2MGWL4vrJjq9FAghlL3-daZUV9hUA3yOrnMGXFLVKE8Zwj90f0eB02D7nfclYd1PN8DGcQS62u8Qc8CGSbtERoSJuDG_D1fXR-my3HmzXAVPkxde5e7764_bYaZ85atn15B3LLUZiQMYfryGS2z4DJ58-J3RylhgY'
    
      const decode = jwt.verify( newToken,publicKey ) 
      
      console.log( decode )
    */
    
  2. 把token发给前端,前端存到cookie里
  3. 取token,如果有直接跳转到首页
function load () {
    const token = localStorage.getItem('token')
    if ( token ) {
      //条件成立,证明token存在
      setTimeout(function () {
        location.href = './index.html'
      },1000)
    } else {
      alert( '用户民或是密码过期了,请重新登录' )
    }
  }

  $('button').on('click',function () {
    $.ajax({
      url: 'http://localhost:3000/login',
      method: 'POST',
      data: {
        username: $('#username').val(),
        password: $('#password').val(),
        token: localStorage.getItem('token')        // 当第一次发送登录请求式,我们携带一个token参数,就是要告诉后端,我是第一次登录,我需要token字符做后期自动登录
      },
      success: function ( res ) {
       if ( res ) {
        const result = JSON.parse( res )
        localStorage.setItem('token',result.token )
        location.href = "./index.html"
       }
      }
    })
  })

你可能感兴趣的:(nodejs,token)