我试图通过graphql mutation来清除用户会话,该mutation将user_id作为参数,并销毁用户会话并发送一条消息,该消息将进一步被前端用于注销。
argument :user_id, ID, required: true
field :message, String, null: true
def resolve(user_id:)
user = User.find_by(id: user_id)
raise GraphQL::ExecutionError, 'User not found.' unless user.present?
destroy_user_session(user_id)
user.save!
{ message: 'User session cleared'}
end
private
def destroy_user_session(user_id)
binding.pry
session = context[:session]
session.clear
raise GraphQL::ExecutionError, 'Failed to clear session.' unless session.empty?
end
end
字符串
但问题是,用户会话在这里没有被正确销毁。我正在使用localhost:3000/api/graphql
测试它,我首先调用突变,然后调用一些其他查询,一旦用户登录,不幸的是,这两个查询都被调用,而不是抛出像authorization is requried
这样的错误。我尝试了几个步骤从不同的网站,但仍然被困在这里。
2条答案
按热度按时间xbp102n01#
由于graphql_controller继承自application_controller,如果您正在使用
devise
,您应该可以访问sign_out
方法,因此如果您尝试调用context[:controller].sign_out
,它应该可以工作字符串
ktecyv1j2#
字符串
上面的代码就足够了。你不必再写了。(以下为Nirajan的回答)