什么是设计authenticate_user的代码!生成后:用户

Abr*_*ram 5 ruby-on-rails devise

我认识到,authenticate_user!没有明确定义在宝石的文件,但我想知道的典型应用(命名型号认证User),将方法是什么样子.我需要知道,以便我可以稍微修改它.

小智 6

我相信你链接到你自己的答案,它定义的方法是

def authenticate_#{mapping}!(opts={})
  opts[:scope] = :#{mapping}
  warden.authenticate!(opts) if !devise_controller? || opts.delete(:force)
end
Run Code Online (Sandbox Code Playgroud)

如果我们替换真正的类,在您的情况下User,它看起来像:

def authenticate_user!(opts={})
  opts[:scope] = :user
  warden.authenticate!(opts) if !devise_controller? || opts.delete(:force)
end
Run Code Online (Sandbox Code Playgroud)

所以它确实需要监管,而这正是大部分认证逻辑所在.

对于典型的Rails应用程序,该authenticate_user!方法将被定义为instance_methodon ApplicationController.