Я не уверен, что я сделал, но вошедший в систему пользователь может получить доступ к new_user_session_path и new_user_registration_path.Обычно при разработке пользователю не следует разрешать доступ к этим путям.Я использую канкан, если что-то меняет.Я создал новое приложение rails, скопировал маршруты и расширил контроллер регистрации и сеансов и не могу воспроизвести проблему.
Если бы кто-то даже мог указать мне в направлении, где перенаправление выполняется в Devise, я быцените это.
В файле конфигурации initializers / devise.rb единственная строка, добавляемая в файл по умолчанию:
config.scoped_views = true
Дайте мне знать, если я смогу предоставить любую другую полезную информацию.Я использую Devise (1.5.3), CanCan (1.6.7) и Rails (3.1.1)
Файл маршрутов:
MyApp::Application.routes.draw do
devise_for :users, :controllers => { :sessions => "sessions", :registrations => "registrations" }, :skip => [ :sessions, :registations ] do
get '/signin' => 'sessions#new', :as => :new_user_session
post '/signin' => 'sessions#create', :as => :user_session
delete '/signout' => 'sessions#destroy', :as => :destroy_user_session
get '/signup' => 'registrations#new', :as => :new_user_registration
post '/users' => 'registrations#create', :as => :user_registration
get '/users/cancel' => 'registrations#cancel', :as => :cancel_user_registration
get '/settings' => 'registrations#edit', :as => :edit_user_registration
put '/account' => 'registrations#update'
delete '/users' => 'registrations#destroy'
end
resources :users
match '/contact', :to => 'pages#contact'
root :to => 'pages#contact'
end
Контроллер расширенных регистраций Devise
class RegistrationsController < Devise::RegistrationsController
# POST /resource
def create
build_resource
resource.company = Company.find_by_code(params[:company_code])
resource.role = Role.find_by_name("Basic")
if resource.save
if resource.active_for_authentication?
set_flash_message :notice, :signed_up if is_navigational_format?
sign_in(resource_name, resource)
respond_with resource, :location => after_sign_up_path_for(resource)
else
set_flash_message :notice, :inactive_signed_up, :reason => inactive_reason(resource) if is_navigational_format?
expire_session_data_after_sign_in!
respond_with resource, :location => after_inactive_sign_up_path_for(resource)
end
else
clean_up_passwords resource
respond_with resource
end
end
end
Контроллер расширенных сессий Devise:
class SessionsController < Devise::SessionsController
layout "sessions"
end
Я понимаю, что могу добавить некоторый код в действия контроллера или в фильтр до, чтобы проверить вошедшего в систему пользователя и перенаправить его.Devise, однако, предлагает функциональность, и я не должен был этого делать.Я боюсь, что, делая это, я могу игнорировать большую проблему, возможно, с конфигурацией Devise.
Я ценю любую помощь!Спасибо!