zoukankan      html  css  js  c++  java
  • jwt vs session 以rails 为例 (翻译部分)

    原文地址:https://pragmaticstudio.com/tutorials/rails-session-cookies-for-api-authentication   

    普通方式: 令牌为基础的验证

    这种通常的形式为JSON Web Token(JWT),逻辑是这样的

    1. 第一步向登录的接口发送post请求

    请求类似于

    POST /auth
    Host: api.your-app.com
    Content-Type: application/json
    
    {
      "username": "mike",
      "password": "supersecret"
    }

     

    2. 后台验证,如果验证通过会返回一个json令牌

    例如:{ "token":"eyJhbGciOiJIUzI1NiJ9" }

    3.  前端会将令牌存储到本地,每次发起请求都会带着这个令牌以示身份。最通用的办法是放在请求头。 这里可以参考rails的knock

    GET /my-stuff
    Host: api.your-app.com
    Authorization: eyJhbGciOiJIUzI1NiJ9

    4. 后台验证令牌,保证敏感数据被合法操作

    缺点

    token要存储在本地。存储在前端本地通常会用到localStorage方法。这个方法容易被xss攻击

    另一种常用的方法session

    1. 发送post请求

    2. 如果验证通过保存session

    session[:user_id] = user.id

    3. 带着session cookie返回请求

    Status: 200
    Content-Type: application/json
    Set-Cookie: _session_id=kTNmUk23l0xxXyDB7rPCcEl6yVet1ahaofUJLd6DxS1XrhbPvU4gF%2B%2BmeMJ%2B4CDYXCcKWssfTM8VzE6YlDnaiVT1iTjg8YRx8DIjFO0BoC%2FT8He09iS5k%2FpBJFD7GD120plb7vxOGkqRWuT1egok6rS7sAQsK21MRIXDFlQJ6QJR3EZycU9CsuV9iHxKZP0UlfHcPQpqUTBDCetoF4PKFNcn%2FzPi0P0%2BunQq5i6YTyXFvaXIks0azNJnXXyFX%2FnAdiaNAFsHAsbhHO5zaHQ%2BxFWbkphV4O42p4s4--gS%2BPgAF3t14Nu6AX--J9MVefd84BIjxylRqjNT2g%3D%3D; path=/; HttpOnly

    HttpOnly保证了session不会被js程序拿到,防止xss攻击

    4. 浏览器会保存cookie每次访问接口会带着令牌

    GET /my-stuff
    Host: api.your-app.com
    Cookie: _session_id=kTNmUk23l0xxXyDB7rPCcEl6yVet1ahaofUJLd6DxS1XrhbPvU4gF%2B%2BmeMJ%2B4CDYXCcKWssfTM8VzE6YlDnaiVT1iTjg8YRx8DIjFO0BoC%2FT8He09iS5k%2FpBJFD7GD120plb7vxOGkqRWuT1egok6rS7sAQsK21MRIXDFlQJ6QJR3EZycU9CsuV9iHxKZP0UlfHcPQpqUTBDCetoF4PKFNcn%2FzPi0P0%2BunQq5i6YTyXFvaXIks0azNJnXXyFX%2FnAdiaNAFsHAsbhHO5zaHQ%2BxFWbkphV4O42p4s4--gS%2BPgAF3t14Nu6AX--J9MVefd84BIjxylRqjNT2g%3D%3D

    5. 后台验证令牌,保证敏感数据被合法操作

  • 相关阅读:
    <li>标签在ie6下的上下间隔的BUG解决办法
    win7 瘦身 减肥 记录!
    学习系统封装半年经验总结!
    DIV 类似 hover 悬停效果 鼠标移动上去变化
    解决 WIN7 部署 安装驱动包时出现的驱动签名提示 办法!
    Windows 7 瘦身大全 系统减肥 轻松 瘦身 减肥 3个G
    JS 判断 取 当前系统类型 可用来定义某些WIN7系统和XP系统下字体区别
    JS 判断 当前浏览器类型
    EasyBoot常用的命令
    Win7封装保持任务栏锁定项不变的解决方法
  • 原文地址:https://www.cnblogs.com/yxi-liu/p/10239331.html
Copyright © 2011-2022 走看看