Joh*_*Del 25 ruby-on-rails devise ruby-on-rails-3 ruby-on-rails-3.1
我想完全禁用路由/ users/sign_in以获取和发布.
我能够使用以下方法成功覆盖它们:
devise_for :users do
get "/admin" => "devise/sessions#new", :as => :new_user_session
post "/admin" => "devise/sessions#create", :as => :user_session
end
Run Code Online (Sandbox Code Playgroud)
当我运行rake路线时,我看到以下内容:
new_user_session GET /admin(.:format) {:controller=>"devise/sessions", :action=>"new"}
user_session POST /admin(.:format) {:controller=>"devise/sessions", :action=>"create"}
new_user_session GET /users/sign_in(.:format) {:action=>"new", :controller=>"devise/sessions"}
POST /users/sign_in(.:format) {:action=>"create", :controller=>"devise/sessions"}
Run Code Online (Sandbox Code Playgroud)
我可以从/ admin以及/ users/sign_in访问登录.但我想完全删除最后两行,是否可能?
我从文档中尝试了一些不同的组合,但它也覆盖了一些有用的组合,如密码/新密码/编辑路由.
小智 23
Katz的解决方案不再像Cirulli所说的那样有效.
请尝试以下方法.
devise_for :users, :skip => [:sessions]
as :user do
get "/admin" => "devise/sessions#new", :as => :new_user_session
post "/admin" => "devise/sessions#create", :as => :user_session
end
Run Code Online (Sandbox Code Playgroud)
Yeh*_*atz 21
您可以通过使用:skip选项来实现此目的:devise_for:
devise_for :users, :skip => [:sessions] do
get "/admin" => "devise/sessions#new", :as => :new_user_session
post "/admin" => "devise/sessions#create", :as => :user_session
end
Run Code Online (Sandbox Code Playgroud)
当我在那之后运行rake路线时,我得到:
new_user_session GET /admin(.:format) {:controller=>"devise/sessions", :action=>"new"}
user_session POST /admin(.:format) {:controller=>"devise/sessions", :action=>"create"}
Run Code Online (Sandbox Code Playgroud)
这里是
devise_for :users, skip: [:sessions,:registrations], controllers: {
omniauth_callbacks: "users/omniauth_callbacks"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12793 次 |
| 最近记录: |