CanCan Rails 授权
CanCan Rails Authorization
我正在创建 REST API 并且还在 REST API 中使用授权。每当用户未被授权执行某项操作时,它会使用以下代码重定向到主页
rescue_from CanCan::AccessDenied do |exception|
redirect_to "/", :alert => exception.message
end
对于 Rest API 方法,我不想在未经授权的访问时被重定向到此页面。相反,我想显示 json
{"Error_msg": "Not Authorized"}.
我的控制器有以下代码:
authorize_resource :class => false, :only => [:create_or_update]
其中 create_or_update
是我要检查授权的操作(方法)。
我的 ability.rb 在 editor
角色中有以下代码
can :create_or_update, :topology
谁能帮我避免仅为此操作重定向到主页。
您可以使用 respond_to
rescue_from CanCan::AccessDenied do |exception|
respond_to do |format|
format.json { render(json: {"Error_msg": "Not Authorized"}, status: :forbidden)}
format.html{
redirect_to "/", :alert => exception.message
}
end
end
rescue_from CanCan::AccessDenied do |exception|
if exception.action.to_s == "create_or_update"
err ={}
err[:error_id] = "AUTHORIZATION_ERROR"
err[:error_msg] = exception.message
render json: err, status: 403
else
redirect_to "/", :alert => exception.message
end
end
我正在创建 REST API 并且还在 REST API 中使用授权。每当用户未被授权执行某项操作时,它会使用以下代码重定向到主页
rescue_from CanCan::AccessDenied do |exception|
redirect_to "/", :alert => exception.message
end
对于 Rest API 方法,我不想在未经授权的访问时被重定向到此页面。相反,我想显示 json
{"Error_msg": "Not Authorized"}.
我的控制器有以下代码:
authorize_resource :class => false, :only => [:create_or_update]
其中 create_or_update
是我要检查授权的操作(方法)。
我的 ability.rb 在 editor
角色中有以下代码
can :create_or_update, :topology
谁能帮我避免仅为此操作重定向到主页。
您可以使用 respond_to
rescue_from CanCan::AccessDenied do |exception|
respond_to do |format|
format.json { render(json: {"Error_msg": "Not Authorized"}, status: :forbidden)}
format.html{
redirect_to "/", :alert => exception.message
}
end
end
rescue_from CanCan::AccessDenied do |exception|
if exception.action.to_s == "create_or_update"
err ={}
err[:error_id] = "AUTHORIZATION_ERROR"
err[:error_msg] = exception.message
render json: err, status: 403
else
redirect_to "/", :alert => exception.message
end
end