rails5 api+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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值