我们有admin_users,我们有常规用户,他们都有单独的表,模型和设计登录。
对一个用户表使用设计并使用cancan作为角色可能更有意义,但是应用程序已经使用两个单独的用户表创建,此时不能更改它们。
管理员用户功能(包括登录)工作正常。 最初,标准用户只能通过基于链接和令牌的身份验证进行访问,但需要更改。
我们的路线
devise_for :admin_users, ActiveAdmin::Devise.config
devise_for :users
resources :users, :only => [:update, :edit]
所以我添加了用户资源的根路径,如Devise文档所示,这是成功登录的地方:
devise_for :admin_users, ActiveAdmin::Devise.config
devise_for :users
resources :users, :only => [:update, :edit] do
root to: "practitioner_activities#welcome"
end
然后我也尝试删除only =>
例如
devise_for :admin_users, ActiveAdmin::Devise.config
devise_for :users
resources :users do
root to: "practitioner_activities#welcome"
end
对于(常规)用户模型我改变了:
devise :token_authenticatable,
也有:
devise :token_authenticatable, # token login still permitted.
:database_authenticatable, :recoverable, :rememberable,
:trackable, :validatable
# Not sure if these will make a difference but they are like this in other apps.
但不是重定向到practitioner_activities#welcome,而是将用户送回登录界面。
我注意到,为登录POST记录的控制台中的第一行是使用AdminUser模型,而不是User模型。知道怎么解决吗?
Started POST "/" for 127.0.0.1 at 2012-08-23 13:54:50 -0400
Processing by HelpController#show as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"28iGxAB+URoIKoBQtPizGAosJoZ/V7Vko1w/bYMvesE=", "new_user_session_path"=>{"email"=>"Borger.Cathy@meridianschools.o
rg", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Sign In"}
AdminUser Load (0.4ms) SELECT "admin_users".* FROM "admin_users" WHERE "admin_users"."id" = 1 LIMIT 1
登录表单本身是:
= semantic_form_for(:new_user_session_path,
:html => {:id => "session_new"}) do|f|
= f.inputs do
= f.input :email, :label => "Username"
= f.input :password
= f.input :remember_me, :as => :boolean, :if => false
= f.commit_button "Sign In"
答案 0 :(得分:0)
最后,主要的事情是再次只是设计生成器,然后编辑设计视图。