如何在覆盖 Devise 控制器的 SessionsController#create 操作时设置 header?
How do I set a header when overriding the SessionsController#create action of Devise controllers?
我写了一个小方法来生成JWT并保存在用户模型上。我现在正在尝试覆盖 SessionsController#create 方法以在成功登录时发回令牌。这就是我尝试这样做的方式:
# SessionsController#create
def create
super do |user|
if user.persisted?
user.generate_auth_token!
response.set_header('Authorization', 'Bearer ' + user.auth_token)
end
end
end
# user model
def generate_auth_token!
payload = { user_id: self.id }
token = JWT.encode(payload, Rails.application.credentials.secret_key_base, 'HS256')
self.auth_token = token
self.auth_token_expiration = DateTime.now + 30.days
self.save!
end
令牌生成得很好,当我通过 rails 控制台检查用户记录时,它似乎保存在用户模型中。
我正在使用 Postman(类似于 cURL,但具有漂亮的 GUI)检查登录后的 headers,但没有 'Authorization' header。
尝试这样做response.headers['your_header_name'] = 'value'
我写了一个小方法来生成JWT并保存在用户模型上。我现在正在尝试覆盖 SessionsController#create 方法以在成功登录时发回令牌。这就是我尝试这样做的方式:
# SessionsController#create
def create
super do |user|
if user.persisted?
user.generate_auth_token!
response.set_header('Authorization', 'Bearer ' + user.auth_token)
end
end
end
# user model
def generate_auth_token!
payload = { user_id: self.id }
token = JWT.encode(payload, Rails.application.credentials.secret_key_base, 'HS256')
self.auth_token = token
self.auth_token_expiration = DateTime.now + 30.days
self.save!
end
令牌生成得很好,当我通过 rails 控制台检查用户记录时,它似乎保存在用户模型中。
我正在使用 Postman(类似于 cURL,但具有漂亮的 GUI)检查登录后的 headers,但没有 'Authorization' header。
尝试这样做response.headers['your_header_name'] = 'value'