2
Q
使用清除API
A
回答
3
爲了解決這個問題,我最終覆蓋了ApplicationController
和User
模型上的authenticate
方法。它看起來是這樣的:
class ApplicationController < ActionController::Base
include Clearance::Controller
include Clearance::Authentication
def authenticate(params)
if request.headers['AUTH-TOKEN']
return nil unless user = User.where(remember_token: request.headers['AUTH-TOKEN']).first
sign_in user
else
User.authenticate(params[:session][:email], params[:session][:password])
end
end
#rest of class omitted for bevity
end
然後我子類SessionsController
覆蓋create
方法,像這樣:
class SessionsController < Clearance::SessionsController
def create
@user = authenticate(params)
sign_in(@user) do |status|
respond_to do |format|
if status.success?
format.html { redirect_back_or url_after_create }
format.json { render json: @user, status: :ok }
else
format.html do
flash.now.notice = status.failure_message
render template: 'sessions/new', status: :unauthorized
end
format.json { render json: [errors: status.failure_message], status: :unauthorized }
end
end
end
end
#rest of class omitted for bevity
end
然後,所有你需要做的測試或使用被AUTH-TOKEN
頭設置請求到users
記住令牌,並且您已全部設置。我選擇使用記憶標記,因爲每當用戶註銷時都會更新記憶標記。您可能不希望發生這種情況,而可能會在您的模型上生成auth_token
字段,並將where
更改爲使用新字段。
相關問題
- 1. 清除使用JSP
- 2. RouteXL API清除遊覽
- 3. 在Node.js中使用API調用清除Cloudflare緩存
- 4. 驗證/清除使用Dojo
- 5. C#使用清除處理
- 6. 使用jQuery清除表單
- 7. 使用J2ME清除畫布
- 8. 使用jQuery清除表格
- 9. 清除使用的NSManagedObjectContext
- 10. 如何使用Apache.NMS API以編程方式清除ActiveMQ隊列?
- 11. 使用API清除多選擇選擇列表的價值
- 12. 嘗試使用Google Calendar API v3清除日曆時是403嗎?
- 13. 如何清除Word使用JavaScript API撤消堆棧
- 14. 清除表格使用敲除
- 15. 使用宏清除WorkSheet的內容而不清除剪貼板
- 16. 在相機的「清除標誌」屬性中使用「不清除」
- 17. 引導窗體使用重置按鈕清除錯誤清除
- 18. 清除按鈕,清除複選框使用CSS
- 19. 如何使用JQuery清除清除按鈕上的文本
- 20. Android WebView清除Cookies程序2017 API 25
- 21. Win32 API vs Java套接字清除(TCP)
- 22. 是否有API來清除終端?
- 23. 通過API的最大CDN清除
- 24. Facebook API SDK(PHP)清除網站會話
- 25. 清除HTML5文件系統API
- 26. 使用Python澄清讀取API結果
- 27. 使用jquery清除某些文本
- 28. UINavigationController - 使用UIBlurEffect清除背景
- 29. 如何使用清除後的Sharepoint
- 30. 使用複選框清除表單