`

rails5 api+jwt

    博客分类:
  • RUBY
jwt 
阅读更多
使用到的gem

gem 'httparty'

gem 'jwt'

 

一:调别人api

继承类:

module JwtToken

  def generate_auth_token(options = {})

    payload = {

      iss: identifier,

    }

    payload.merge! options

    JWT.encode(payload, password_digest.to_s)

  end

end

 

类:

module Helper

  extend JwtToken

  SETTING['you_host'] = “ you ip“

  mattr_accessor :identifier, :password_digest

  self.identifier = 'you identifier'

  self.password_digest = '12312SM6retKX1Z82Y53N3LFGL'


  def self.auth_token

    @auth_token ||= generate_auth_token(sub: 'auth')

  end


  def self.query(url, body)

    url = SETTING['you_host'] + url

    headers = {

      'Auth-Token': auth_token

    }

    HTTParty.post(url, body: body, headers: headers)

  end

end


调用:

result = Helper.query('api/you_api/new_blog', body)


二:对外提供api:


校验权限:

class Api::BaseController < ApplicationController

  before_action :verify_auth_token

  ALLOW_APP = {

    'you_secret' => '12312S12313OZ82Y53N3LFGL',

    'wh_in' => '12331288c583772a85174b11547c5945a15'

  }

 

  def verify_auth_token

    token = request.headers['Auth-Token']

    payload = decode_without_verification(token)

    return unless payload

    begin

      JWT.decode(token, ALLOW_APP[payload['iss']], true, {'sub' => 'auth', verify_sub: true})

    rescue => e

      render(json: { error: e.message }, status: 500) and return

    end

  end

  private

  def decode_without_verification(token)

    begin

      payload, _ = JWT.decode(token, nil, false, verify_expiration: false)

    rescue => e

      render(json: { error: e.message }, status: 500) and return

    end

    payload

  end

end

 
权限通过同时返回查询处理结果

class Api::JobController < Api::BaseController

def shipping

    shiping_params = params[:shipping]

    shipping = Shipping.new.tap do |ship|

      ship.express_no = shiping_params[:express_no]

      ship.ship_type = params[:shipping_name]

      ship.order_item_id = params[:order_detail_id]

    end

    render json: {success: true}, status: 200

  end

end
0
0
分享到:
评论

相关推荐

    Ruby-Knock为RailsAPI实现无缝JWT身份验证

    在描述中提到的"Knock"是一个专门为Rails API设计的库,它帮助开发者实现JSON Web Token(JWT)的身份验证,这是一种安全的身份验证机制,适用于无状态API。 JWT是一种轻量级的认证协议,它允许服务器向客户端发送...

    knock, 用于 Rails API的无缝JWT身份验证.zip

    knock, 用于 Rails API的无缝JWT身份验证 敲门 用于 Rails API的无缝JWT身份验证描述敲门是 Rails api的认证解决方案,基于JSON网络令牌的应用程序。什么是JSON网络令牌? :为什么要使用这里选项?它是轻量级的。它...

    CRA+RailsAPI+设计登录+ActiveAdmin样板_Ruby_JavaScript_下.zip

    标题 "CRA+RailsAPI+设计登录+ActiveAdmin样板_Ruby_JavaScript_下" 提供了关于项目的核心技术栈,其中包括Create React App (CRA)、Ruby on Rails API 和 ActiveAdmin,以及登录功能的设计。这是一份使用前端React...

    Rails API的无缝JWT身份验证-Ruby开发

    敲击Rails API的无缝JWT身份验证描述Knock是基于JSON Web令牌的仅用于Rails API的应用程序的身份验证解决方案。 我为什么要用这个? 它很轻巧。 它敲响了Rails API的Seamless JWT身份验证描述Knock是基于JSON Web...

    rails-api-4.0.0

    《Rails API 4.0.0:Ruby on Rails框架的API设计与开发指南》 Rails API 4.0.0是Ruby on Rails框架的一个版本,专门针对构建应用程序接口(APIs)进行了优化。Ruby on Rails是由David Heinemeier Hansson创建的开源...

    rails api(文档)

    5. **版本控制**:API的版本控制很重要,Rails API允许你为不同版本的API创建独立的命名空间,确保向后兼容性。 6. **错误处理**:Rails API鼓励返回标准的HTTP状态码和结构化的错误消息,以便客户端可以理解并适当...

    rails5-api-jwt-facebook-auth:使用Facebook登录进行JWT身份验证(敲门gem)的Rails5示例应用程序

    使用Facebook登录的Rails5 JWT身份验证这个rails5 API应用程序是JWT身份验证以及Facebook登录的概念证明。 它使用 ,。使用的宝石API身份验证。 用于ENV变量。 用于facebook access_token验证和用户信息检索。组态...

    railsAPI

    Rails API 是一个强大的框架,用于构建高效、可扩展的Web应用程序。它基于Ruby编程语言,遵循MVC(模型-视图-控制器)架构模式,使得开发者可以轻松地处理数据存储、用户界面和业务逻辑。Rails API 特别适用于构建...

    Rails上的API:使用Rails构建REST APIAPIs on Rails: Building REST APIs with Rails

    4. **实现认证和授权机制**:为了保证API的安全性,需要实现用户认证和权限管理功能,例如使用JWT(JSON Web Tokens)、OAuth等方式。 5. **错误处理**:定义一套统一的错误处理策略,当请求无法正确处理时能够向...

    rails-api-grape:基于Rails和Garpe开发前替代分离网站-逐步

    这是使用rails5 api + grape,来实现前缩小分离项目的一个基本脚手架。为帮助新手快速的建造一个rails项目。本仓库尽量保持业务逻辑的简洁,你可以是直接fork该项目,在此基础上直接进行网站的开发。 相关插件 栏杆...

    rails-api-4.2.4

    Rails API 是一个专门为构建RESTful API设计的轻量级Rails框架版本。在4.2.4这个版本中,它专注于提供高效、灵活且易于维护的API接口,而非完整的Web应用程序功能。这个框架允许开发者快速创建面向服务的架构(SOA)...

    敲:Rails API的无缝JWT身份验证

    Rails API的无缝JWT身份验证 描述 Knock是基于JSON Web令牌的仅Rails API应用程序的身份验证解决方案。 我为什么要用这个? 轻巧。 它是为仅Rails API的应用程序量身定制的。 它是。 它可以与服务 这被维持吗?...

    jwt-rails-api:具有JWT身份验证的新Rails api的框架

    自述文件 该自述文件通常会记录启动和运行应用程序所需的所有步骤。 您可能要讲的内容: Ruby版本 系统依赖 组态 数据库创建 数据库初始化 如何运行测试套件 服务(作业队列,缓存服务器,搜索引擎等) ...

    api_guard:用于Rails API的JWT身份验证解决方案

    API防护 基于的身份验证解决方案,针对基于Rails的API进行令牌刷新和列入黑名单。 这是使用 gem构建的。 当前,API Guard仅支持HS256算法进行加密签名。目录安装将此行添加到您的应用程序的Gemfile中: gem 'api_...

    rest-api-authentication-jwt-ruby:使用Ruby,Rails,PostgreSQL,JWT等开发的软件(REST-API)

    REST API身份验证Rails-JWT V1.0描述该存储库是具有Rails,JWT,PostgreSQL等的应用程序软件安装使用Ruby 2.7时,最好使用Rails 6.0。软件Ruby版本管理器RVM 1.29.10-next数据库使用PostgreSQL应用客户休息:邮递员...

    ermahgerd-emberjs-jwt-token:Ember 3+,带有Rails JWT后端的Ember简单身份验证

    自述文件-ermahgerd-emberjs-jwt-token 这个Ember应用程序通过与Rails API服务器进行通信。开发-入门您需要以下内容:考虑使用 确保安装CLI yarn global ember-cli 通过Testem运行的单元测试需要Chrome首次设置git ...

    react-rails-devise-jwt-basic:具有Devise和JWT基本设置的Rails

    如何设置JWT 在应用程序的根目录中创建一个Procfile.dev并向其中添加以下行。 webpacker: ./bin/webpack-dev-server如果您没有安装工头,请按以下步骤安装到您的主目录(在应用程序外部): gem install foreman在...

    jwt-server-demo:用于演示 JWT 用例的 Rails API

    这是一个演示如何使用 JWT 的 Rails API。 JWT 用于以下情况: 基于令牌的身份验证 重设密码 技术细节 您可以查看spec/requests以了解如何使用 API。 我将大部分逻辑放在独立的 Ruby 文件中,它们是: lib/token_...

    使用rails6开发纯后端API项目.zip

    在Rails 6中开发纯后端API项目是一个常见的任务,特别是在构建现代Web应用程序时,前端与后端分离的架构越来越流行。Rails作为一个强大的Ruby框架,提供了丰富的功能来帮助开发者高效地构建API服务。下面我们将详细...

    fearless-items:RESTful Ruby on Rails Web API提供项目

    5. **认证与授权** - 如OAuth、JWT,确保API安全。 6. **错误处理** - 设计和实现优雅的错误响应机制。 7. **测试** - 使用RSpec或其他测试工具编写单元测试和集成测试。 8. **版本控制** - 使用Git进行版本管理和...

Global site tag (gtag.js) - Google Analytics