Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >Rails:使用RestClient的外部API集成(400个坏请求)

Rails:使用RestClient的外部API集成(400个坏请求)
EN

Stack Overflow用户
提问于 2019-08-22 10:48:54
回答 1查看 298关注 0票数 0

我正在建设一个数字图书馆,我已经完成了许多所需的功能。目前,我在将数字图书馆与学习管理系统(LMS)集成方面存在问题。

我已经有一个管理认证系统的数字图书馆使用的设计宝石。我的目标是允许想要访问数字图书馆的用户使用他们的学习管理系统(LMS)凭据(用户名和密码)登录到数字图书馆。

我已经获得了学习管理系统(LMS)的Login端点和其他所需参数,并创建了用户模型会话控制器会话视图模板

我目前正在为API调用使用RestClient Gem,但是有一个错误400坏请求。我试着调试这个问题,它可以指向会话控制器中的这一行

代码语言:javascript
代码运行次数:0
复制
 response = RestClient::Request.execute(

下面是我的源代码

会话控制器

代码语言:javascript
代码运行次数:0
复制
require 'rest-client'

class SessionsController < ApplicationController
  def new
  end

  def create
    response = RestClient::Request.execute(
      method: :post,
      url: 'https://newapi.example.com/token',
      payload: { 'username': 'params[:username]',
                 'password': 'params[:password]',
                 'grant_type':'password' },
      headers: { apiCode: '93de0db8-333b-4f478-aa92-2b43cdb7aa9f' }
    )

    case response.code
    when 400
      flash.now[:alert] = 'Email or password is invalid'
      render 'new'
    when 200
      session[:user_id] = user.id
      redirect_to root_url, notice: 'Logged in!'
    else
      raise "Invalid response #{response.to_str} received."
    end
  end

  def destroy
    session[:user_id] = nil
    redirect_to root_url, notice: 'Logged out!'
  end
end

会话新视图

代码语言:javascript
代码运行次数:0
复制
<p id=”alert”><%= alert %></p>
<h1>Login</h1>
<%= form_tag sessions_path do %>
  <div class="field">
    <%= label_tag :username %>
    <%= text_field_tag :username %>
  </div>
  <div class="field">
    <%= label_tag :password %>
    <%= password_field_tag :password %>
  </div>
  <div class="actions">
    <%= submit_tag 'Login' %>
  </div>
<% end %>

用户模型

代码语言:javascript
代码运行次数:0
复制
class User < ApplicationRecord
  has_secure_password

  validates :username, presence: true, uniqueness: true
end

对代码示例的任何形式的帮助都将不胜感激。如果需要的话,我也愿意提供更多关于这种集成的信息。提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-22 11:06:34

你应该删除你的帕拉姆斯周围的引语:

代码语言:javascript
代码运行次数:0
复制
 response = RestClient::Request.execute(
      method: :post,
      url: 'https://newapi.example.com/token',
      payload: { 'username': params[:username],
                 'password': params[:password],
                 'grant_type':'password' },
      headers: { apiCode: '93de0db8-333b-4f478-aa92-2b43cdb7aa9f' }
    )

如果您有引号,这意味着您的username值et password值是硬编码的。在这里,您想从您的params检索usernamepassword

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57615476

复制
相关文章
如何实现一个串行promise
1、使用数组的reduce方法,reduce里有四个参数,pre,next,index,arr,
windseek
2019/10/23
1.2K0
破解 Kotlin 协程(7) - 序列生成器篇
在 Kotlin 当中,Sequence 这个概念确切的说是“懒序列”,产生懒序列的方式可以有多种,下面我们介绍一种由基于协程实现的序列生成器。需要注意的是,这个功能内置于 Kotlin 标准库当中,不需要额外添加依赖。
bennyhuo
2020/02/20
8600
使用keras开发非串行化神经网络
我们当前所开发的网络都遵循同一个模式,那就是串行化。多个网络层按照前后次序折叠起来,数据从底层输入,然后从最高层输出,其结构如下图:
望月从良
2018/12/28
6700
使用keras开发非串行化神经网络
iOS开发中的并发、串行队列,同步、异步任务
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/69914369
用户1451823
2018/09/13
1.7K0
iOS开发中的并发、串行队列,同步、异步任务
GCD 串行队列
只要是异步就可以获取多个线程,但是串行队列,任务没有完成,不能拿任务。所以只会获取1个线程,因为加另外一个线程,没有任务。
CC老师
2023/03/23
3600
GCD 串行队列
如何破解止损难题
第一篇《币圈的盈利止损》分析了止损的本质是价格进入下降通道,为避免损失扩大而退出,与买入成本无关,并进一步把止损分为盈利止损和亏损止损。
凌帅出口
2018/08/17
4180
如何破解Excel VBA密码
首先,如果文件格式是(.xslm),需要先打开Excel文件,另存为2003版格式(.xls)。
landv
2018/09/26
6.9K0
如何破解Excel VBA密码
软件都是如何被“破解”的?开发者有办法阻止破解版的产生吗?
软件的破解属于正常流程的反向过程,破解软件主要目的在于如何最大程度的获取利益,而且大部分的破解软件都和正版收费有一定的关联,破解软件之所以有如此大的市场就是因为强烈的市场需求,特别是在国内范围很多国外的软件只要发现有收费的行为,立即寻找破解版而且基本上都能找到,这是破解市场如此火热的主要原因。
程序员互动联盟
2020/04/03
4.5K0
GDB串行协议概述
做嵌入式开发时,很多时候都会使用到GDB,从底层去理解GDB的调试过程,将更加容易的理解调试的过程。
bigmagic
2021/08/20
1.5K0
什么是Promise串行
Promise串行是指每一个由promise封装的任务都顺序执行,即上一个执行完成后再执行下一个。
用户1687375
2020/02/25
1.1K0
串行乘法器
module ade( clk,x,y,q ); input clk; input [7:0]x,y; output [15:0]q; reg [15:0]q; parameter s0=0,s1=1,s2=2; reg [2:0]count=0; reg [1:0]state=0; reg [15:0]p1,t; reg [7:0]y_reg; always @ (posedge clk) begin case(state) s0: begin y_reg<=y; sta
瓜大三哥
2018/02/24
6650
串行乘法器
AsyncTask? AsyncTask串行and并行?
AsyncTask,相信你不会陌生,也许你很幸运,早已了解了AsyncTask这个家伙挖的坑,也许你已经被坑过了,也许你没坑了,然而还没有发觉!
陈宇明
2020/12/15
1K0
AsyncTask? AsyncTask串行and并行?
快速开发必备:代码生成器
开发程序那么久了,真正使用代码生成器是近3年的事情,由衷的感觉到这东西真的是提高生产力!
崔文远TroyCui
2019/02/26
1.2K0
破解区块链应用开发难题,开发者该如何抓住区块链红利?
作为数字经济时代重要的底层支撑技术之一,区块链在推动数字经济发展和企业数字化转型中发挥着重要作用。 近年来,我国区块链顶层设计加快完善。“十四五”规划明确提出,将区块链列为数字经济七大重点产业之一,发展区块链服务平台和金融科技、供应链管理、政府服务等领域的应用方案。同时,区块链产业加速发展,产业规模不断攀升。根据赛迪区块链研究院发布的《2021 年我国区块链年度发展白皮书》显示,我国区块链产业规模由 2016 年的 1 亿元增加至 2021 年的 65 亿元。在应用层面,区块链在政务、司法存证、供应链金融、
bengbengsu
2022/07/12
9960
破解区块链应用开发难题,开发者该如何抓住区块链红利?
串行总线技术(一)-串行总线结构(以PCIe为例)
在早期的计算机系统中,多数外围设备使用并行总线结构。这些总线包括PCI和PATA(并行ATA)。当通信速率较低时,并行总线结构可以设计得非常简单和有效,可以连接大量外围设备。通过使用中央仲裁机制,可以方便地实现总线设备间的通信:然而,当速率和带宽不断增加时,并行结构的潜力不断被发掘并不再能够满足系统设计要求。
碎碎思
2021/10/18
3.4K0
串行总线技术(一)-串行总线结构(以PCIe为例)
python pyserial 串行端口编程
二、特性 在支持的平台上有统一的接口。 通过python属性访问串口设置。 支持不同的字节大小、停止位、校验位和流控设置。 可以有或者没有接收超时。 类似文件的API,例如read和write,也支持readline等。 支持二进制传输,没有null消除,没有cr-lf转换。
用户5760343
2022/05/13
9880
如何破解苹果电脑密码
一般苹果电脑有两种破解密码的方法,老款的是开机时按住command+r键进入恢复模式,另一种是针对新款的MacBook 开机键又叫(mesa)键+command进入密码恢复模式。
知识与交流
2021/04/02
3.7K0
如何破解苹果电脑密码
前端如何破解 CRUD 的循环
据说,西西弗斯是一个非常聪明的国王,但他也非常自负和狂妄。他甚至敢欺骗神灵,并把死者带回人间。为此,他被宙斯(Zeus)惩罚,被迫每天推着一块巨石上山,但在接近山顶时,巨石总是会滚落下来,他不得不重新开始推石头,永远困在这个循环中…
_sx_
2023/10/20
3411
前端如何破解 CRUD 的循环
串行通信(USART/UART)「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/144690.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/30
6900
串行通信(USART/UART)「建议收藏」
看大佬如何破解智能门锁
上一篇文章的分析中,我们发现Yale智能门锁的通信中存在两个问题,本篇文章将分为两个部分描述如何利用这两个问题:
物联网安全小编
2020/05/29
2.5K0
看大佬如何破解智能门锁

相似问题

PHP暴力破解密码生成器

31

串行读/写/开发/tty检查

24

如何破解IAsyncResult?

15

如何破解$.each

31

如何破解__NSAutoreleaseNoPool

56
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档