Hotwire rails 应用程序:重定向到外部服务失败
Hotwire rails app: redirect to external service fails
我正在将 discourse 单点登录与 hotwire rails 应用程序集成,在重定向之前一切正常,当它重定向时我看到有 CORS 问题浏览器,当然它的 turbo 请求所以它尝试从 give URL 中获取响应,因此它会抛出 CORS 错误,我们如何在此处进行实际重定向?
def sso
secret = "572890bb92bbef8c4634c1bf"
sso = SingleSignOn.parse(request.query_string, secret)
sso.email = current_user.email # from devise
sso.name = current_user.name # this is a custom method on the User class
sso.username = current_user.username # from devise
sso.external_id = current_user.id # from devise
sso.sso_secret = secret
redirect_to sso.to_url("https://xxxxxxxx/session/sso_login")
end
编辑(1)
<main class="main-content">
<div class="d-flex justify-content-center">
<div>
<div class="mt-48 py-48 px-md-48 px-32 border-radius-lg log-in-card box-shadow-05">
<h4 class="font-size-24 text-black font-weight-400 mb-0">Member Login</h4>
<%= form_for(resource, as: resource_name, url: session_path(resource_name), html: {class: 'mt-48'}) do |f| %>
<div class="form-group mb-0">
<%= f.label :email, class: "font-weight-500 font-size-14 text-black" %>
<%= f.email_field :email, autofocus: true, autocomplete: "email", class: 'form-control-lg form-control' %>
</div>
<div class="form-group position-relative mt-32">
<%= f.label :password, class: "font-weight-500 font-size-14 text-black" %>
<%= f.password_field :password, autocomplete: "current-password", class: 'form-control-lg form-control' %>
<div class="position-absolute eye-icon"><i class="far fa-eye-slash font-size-14 text-black"></i></div>
</div>
<div class="d-flex flex-column align-items-center mt-32">
<%= f.submit "Login", class: 'btn btn-brand-primary py-12 px-48 text-decoration-none' %>
<%- if devise_mapping.recoverable? && controller_name != 'passwords' && controller_name != 'registrations' %>
<%= link_to "Forget password?", new_password_path(resource_name), class: 'text-decoration-none text-brand-primary font-weight-600 font-size-14 mt-32' %>
<% end %>
</div>
<% end %>
</div>
<div class="d-flex justify-content-center mt-48">
<span class="text-black font-weight-500 font-size-14 text-decoration-none">Not a member?</span>
<%- if devise_mapping.registerable? && controller_name != 'registrations' %>
<%= link_to "Create Account", new_registration_path(resource_name), class: 'text-brand-primary font-weight-600 font-size-14 text-decoration-none ml-8' %>
<% end %>
</div>
<div class="d-flex flex-md-row flex-column align-items-center justify-content-center mt-48 mb-96 pb-md-64">
<span class="text-black font-weight-500 font-size-14 text-decoration-none">Didn't receive confirmation
instructions?</span>
<%- if devise_mapping.confirmable? && controller_name != 'confirmations' %>
<%= link_to "Request again", new_user_confirmation_path(resource_name), class: 'text-brand-primary font-weight-600 font-size-14 text-decoration-none ml-8'%>
<% end %>
</div>
</div>
</div>
</main>
我在登录表单中使用了 data-turbo="false"
,它会向后端发送 HTML 请求,因为当我进行重定向时,它会重定向整个页面。谢谢
https://turbo.hotwire.dev/handbook/drive#disabling-turbo-drive-on-specific-links-or-forms
我正在将 discourse 单点登录与 hotwire rails 应用程序集成,在重定向之前一切正常,当它重定向时我看到有 CORS 问题浏览器,当然它的 turbo 请求所以它尝试从 give URL 中获取响应,因此它会抛出 CORS 错误,我们如何在此处进行实际重定向?
def sso
secret = "572890bb92bbef8c4634c1bf"
sso = SingleSignOn.parse(request.query_string, secret)
sso.email = current_user.email # from devise
sso.name = current_user.name # this is a custom method on the User class
sso.username = current_user.username # from devise
sso.external_id = current_user.id # from devise
sso.sso_secret = secret
redirect_to sso.to_url("https://xxxxxxxx/session/sso_login")
end
编辑(1)
<main class="main-content">
<div class="d-flex justify-content-center">
<div>
<div class="mt-48 py-48 px-md-48 px-32 border-radius-lg log-in-card box-shadow-05">
<h4 class="font-size-24 text-black font-weight-400 mb-0">Member Login</h4>
<%= form_for(resource, as: resource_name, url: session_path(resource_name), html: {class: 'mt-48'}) do |f| %>
<div class="form-group mb-0">
<%= f.label :email, class: "font-weight-500 font-size-14 text-black" %>
<%= f.email_field :email, autofocus: true, autocomplete: "email", class: 'form-control-lg form-control' %>
</div>
<div class="form-group position-relative mt-32">
<%= f.label :password, class: "font-weight-500 font-size-14 text-black" %>
<%= f.password_field :password, autocomplete: "current-password", class: 'form-control-lg form-control' %>
<div class="position-absolute eye-icon"><i class="far fa-eye-slash font-size-14 text-black"></i></div>
</div>
<div class="d-flex flex-column align-items-center mt-32">
<%= f.submit "Login", class: 'btn btn-brand-primary py-12 px-48 text-decoration-none' %>
<%- if devise_mapping.recoverable? && controller_name != 'passwords' && controller_name != 'registrations' %>
<%= link_to "Forget password?", new_password_path(resource_name), class: 'text-decoration-none text-brand-primary font-weight-600 font-size-14 mt-32' %>
<% end %>
</div>
<% end %>
</div>
<div class="d-flex justify-content-center mt-48">
<span class="text-black font-weight-500 font-size-14 text-decoration-none">Not a member?</span>
<%- if devise_mapping.registerable? && controller_name != 'registrations' %>
<%= link_to "Create Account", new_registration_path(resource_name), class: 'text-brand-primary font-weight-600 font-size-14 text-decoration-none ml-8' %>
<% end %>
</div>
<div class="d-flex flex-md-row flex-column align-items-center justify-content-center mt-48 mb-96 pb-md-64">
<span class="text-black font-weight-500 font-size-14 text-decoration-none">Didn't receive confirmation
instructions?</span>
<%- if devise_mapping.confirmable? && controller_name != 'confirmations' %>
<%= link_to "Request again", new_user_confirmation_path(resource_name), class: 'text-brand-primary font-weight-600 font-size-14 text-decoration-none ml-8'%>
<% end %>
</div>
</div>
</div>
</main>
我在登录表单中使用了 data-turbo="false"
,它会向后端发送 HTML 请求,因为当我进行重定向时,它会重定向整个页面。谢谢
https://turbo.hotwire.dev/handbook/drive#disabling-turbo-drive-on-specific-links-or-forms