如何在注销后使用RailsHotwire调用API来刷新所有cookie、令牌和会话



我正在进行一个项目,该项目在Rails-Hotwire中完成,其中使用了design-gem进行身份验证,并在前端使用了Stimulus.js。我不想使用link_to,而是想写一个带有delete方法的API来刷新:cookie,token,cause time delay需要一些时间来删除所有正在创建问题的内容:

我的初始代码:

<%= link_to '/api/v2/iam/users/sign_out', method: :delete, data: { action: 'click->biz-account#logout' } do %>
<button class="hidden lg:block btn--outlined py-[16px]" data-cy="logout"><%= I18n.t('biz.log_out') %></button>
<% end %>

biz-account.js

logout() {
setTimeout(() => {
location.href = '/'
}, 300);
}

现在,我想从视图部分调用delete API,在javascript API中完成整个delete的事情。如何做到这一点?

我试着这样做,但没有奏效:

app/javascript/services/api_calls.js

export const logout = 
function () {
call(
'/api/v2/iam/users/sign_out',
{},
function (value) {
if (value.message) {
window.alert = 
openSnackbar(value.message, 'success')
} else {
window.alert = 
openSnackbar(value.errors, 'error')
}
callback(value);
},
{verb: 'DELETE'})
}

如果您想用javascript来完成,您可以使用Fetch API来发出请求,然后等待响应并检查它是否成功。

如果你想不使用javascript而不是使用链接,你可以切换到使用按钮,而不是重定向到后端指向的任何地方。

此外,如果你正在使用火线,你可以更改链接上的方法:选项以使用火线方法,然后它将遵循后端的重定向

link_to "api", method: :delete  # With rails UJS
link_to "api", data: { turbo_method: :delete } # With hotwire

相关内容

  • 没有找到相关文章