我在RoR应用程序中使用devise-jwt进行基于令牌的身份验证。客户端在头部中发送一个令牌,如下所示:Bearer #{token}
通过使用authenticate_user!
,我能够在控制器中验证用户,并将登录的用户作为current_user
。
当我使用Actioncable时,connection.rb中的connect方法需要从令牌中查找用户。连接.rb如下所示:
module ApplicationCable
class Connection < ActionCable::Connection::Base
identified_by :current_user
def connect
token = request.env["Authorization"]
find_verified_user
end
private
def find_verified_user
if authenticate_user!
self.current_user = current_user
else
reject_unauthorized_connection
end
end
end
end
字符串
然而,authenticate_user!
在这里不是一个有效的方法(因为它是特定于设计的)。
我的问题是如何在这里找到current_user?如何识别在头中发送令牌的客户端?
1条答案
按热度按时间iibxawm41#
从
JWT
令牌检索用户的一种方法是使用Warden::JWTAuth
助手:字符串
或者直接使用
JWT
:型
(其中
jwt_algorithm
通常为HS256
)