1
class Api::V1::SessionsController < Devise::SessionsController
  def create
    if User.find_by(member_id: params[:user][:member_id])
      self.resource = warden.authenticate!(auth_options)
      sign_in(resource_name, resource)
      resource.reset_authentication_token!
      resource.save!
    else
      error :not_found
    end
  end
end

如何更改创建操作以确保只有具有角色的用户member才能登录:“”。例如管理员(user.role => :admin)得到error => :unauthorized

4

1 回答 1

0

懒惰的版本会在发现用户不是成员时引发异常,但好的设计不应该使用异常来处理正常情况。

也许像这样?

user = User.find_by(member_id: params[:user][:member_id])
return error :unauthorized unless user.role == :member

if user
  ...
else
  ...
end
于 2013-07-22T14:22:20.130 回答