我正在建设一个数字图书馆,我已经完成了许多所需的功能。目前,我在将数字图书馆与学习管理系统(LMS)集成方面存在问题。
我已经有一个管理认证系统的数字图书馆使用的设计宝石。我的目标是允许想要访问数字图书馆的用户使用他们的学习管理系统(LMS)凭据(用户名和密码)登录到数字图书馆。
我已经获得了学习管理系统(LMS)的Login端点和其他所需参数,并创建了用户模型、会话控制器和会话视图模板。
我目前正在为API调用使用RestClient Gem,但是有一个错误400坏请求。我试着调试这个问题,它可以指向会话控制器中的这一行
response = RestClient::Request.execute(
下面是我的源代码
会话控制器
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
会话新视图
<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 %>
用户模型
class User < ApplicationRecord
has_secure_password
validates :username, presence: true, uniqueness: true
end
对代码示例的任何形式的帮助都将不胜感激。如果需要的话,我也愿意提供更多关于这种集成的信息。提前谢谢你。
发布于 2019-08-22 19:06:34
你应该删除你的帕拉姆斯周围的引语:
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检索username
和password
。
https://stackoverflow.com/questions/57615476
复制相似问题