我在 Rails 应用程序中使用 cancan、devise 和omniauth。我对omniauth 很满意,current_user 方法很有帮助。能力课也很有帮助。当用户注册时,我只从omniauth 收到他的电子邮件,并使用一些参数为他手动创建一个用户。所以我没有使用创建用户的设计方式。
因此,我不需要 :database_authenticable。拥有它可以防止我在没有密码的情况下保存用户。但是,如果没有它,当用户遇到未经授权的资源时,他们会转到“/”而不是“/users/sign_in”。
我不想使用 :database_authenticable,如果未经授权,请让用户转到“/users/sign_in”。我该怎么做?
注意:几乎我所有的控制器都有细粒度的 authenticate_user!过滤前,例如:
class UsersController < ApplicationController
before_filter :authenticate_user!, :except => [:index, :index_small, :show,
:new , :sign_in ]
所以我不确定我是否可以before_filter :authenticate_user!
在 application_controller 中做任何事情。如果我可以在所有控制器上摆脱这个过滤器,那也很好。