在 config/initializers/doorkeeper.rb 中根据 resource_owner_authenticator 中的不同条件引发自定义错误
raise custom error based on different conditions in resource_owner_authenticator in config/initializers/doorkeeper.rb
我想引发自定义错误并根据不同的条件自定义错误响应。
对于身份验证,我有一些用户未通过身份验证的条件,例如,
不是活跃用户,用户资料不完整等等
我遵循了这个,#315,我配置了相同但执行停止在引发自定义门卫错误的行。
Doorkeeper.configure do
resource_owner_authenticator do
@user = User.find(session[:user_id]) || redirect_to(user_login_path(return_to: request.fullpath))
raise Doorkeeper::Errors::OwnError unless @user.status == 'active'
end
end
如果有人有任何线索,请提供帮助。
您可能已经找到了答案,如果您还没有的话:
将此添加到您使用 doorkeeper_authorize!
的控制器
def doorkeeper_unauthorized_render_options(error: nil)
response_hash = { status: false, description: error.description, expired: false }
response_hash[:expired] = true if error.description == "The access token expired"
{ json: response_hash }
end
此处 respnse_hash 将是返回的错误。
在阅读 NEWS.md 文件之前,我遇到了同样的问题:
- [#749] Allow user to raise authorization error with custom messages.
Under `resource_owner_authenticator` block a user can
`raise Doorkeeper::Errors::DoorkeeperError.new('custom_message')`
对于密码流POST/oauth/token:
resource_owner_from_credentials do |routes|
raise Doorkeeper::Errors::DoorkeeperError.new('custom_message')
end
给出如下回复:
{
"error": "custom_message",
"error_description": "The authorization server encountered an unexpected condition which prevented it from fulfilling the request."
}
我想引发自定义错误并根据不同的条件自定义错误响应。 对于身份验证,我有一些用户未通过身份验证的条件,例如, 不是活跃用户,用户资料不完整等等
我遵循了这个,#315,我配置了相同但执行停止在引发自定义门卫错误的行。
Doorkeeper.configure do
resource_owner_authenticator do
@user = User.find(session[:user_id]) || redirect_to(user_login_path(return_to: request.fullpath))
raise Doorkeeper::Errors::OwnError unless @user.status == 'active'
end
end
如果有人有任何线索,请提供帮助。
您可能已经找到了答案,如果您还没有的话:
将此添加到您使用 doorkeeper_authorize!
的控制器def doorkeeper_unauthorized_render_options(error: nil)
response_hash = { status: false, description: error.description, expired: false }
response_hash[:expired] = true if error.description == "The access token expired"
{ json: response_hash }
end
此处 respnse_hash 将是返回的错误。
在阅读 NEWS.md 文件之前,我遇到了同样的问题:
- [#749] Allow user to raise authorization error with custom messages.
Under `resource_owner_authenticator` block a user can
`raise Doorkeeper::Errors::DoorkeeperError.new('custom_message')`
对于密码流POST/oauth/token:
resource_owner_from_credentials do |routes|
raise Doorkeeper::Errors::DoorkeeperError.new('custom_message')
end
给出如下回复:
{
"error": "custom_message",
"error_description": "The authorization server encountered an unexpected condition which prevented it from fulfilling the request."
}