1
我使用devise_token_auth和一切正常,直到我加入API約束路由:constraints: ApiConstraint.new(version: 4, default: true)
如何調解使用ApiConstraints設計重置密碼路由?
Rails.application.routes.draw do
namespace :api do
scope module: :v4, constraints: ApiConstraint.new(version: 4, default: true) do
# Token auth routes available at /api/auth
mount_devise_token_auth_for "User", at: "auth"
end
end
end
添加這些約束限制訪問路線,除非請求中包含正確的頭:
class ApiConstraint
attr_reader :version
VENDOR_MIME = "application/vnd.myproject-v%d"
def initialize(version: "4", default: false)
@version, @default = version, default
end
def matches?(request)
byebug # <-- I wish there was something like request.current_path available
return @default unless request.headers.key?("accept")
request
.headers
.fetch("accept")
.include?(VENDOR_MIME % version)
end
end
我意識到這是有問題的重置密碼鏈接,我們通過電子郵件獲得:
https://myproject.herokuapp.com/api/auth/password/edit?reset_password_token=...
...因爲它不能攜帶任何標題!
我可以將用戶重定向到一個網頁,然後就一個AJAX調用與適當的標題,但我不知道是否有辦法來提高我的routes.rb
或ApiConstraint
類,使/auth/password/edit
路線上的異常?
是'request.url'或'request.fullpath'你在找什麼? – Shiyason
@Shyyason是!隨意做出答案 –