Я не уверен, что я сделал, но пользователь с подписью может получить доступ к пути new_user_session_path и new_user_registration_path. Обычно в разработке пользователь не должен иметь доступ к этим путям. Я использую cancan, если это имеет значение. Я создал новое приложение для рельсов и скопировал его по маршрутам, расширил регистрацию и контроллер сессий и не смог реплицировать проблему.Использование rails, devise и cancan, подписанный пользователь может получить доступ к входам и зарегистрировать пути
Если кто-то может указать мне в направлении, где перенаправление выполняется в Devise, я был бы признателен.
В конфигурационном файле Инициализаторы/devise.rb, единственная строка добавляется к файлу по умолчанию:
config.scoped_views = true
Позвольте мне знать, если я могу поставить любую другую полезную информацию. Я использую Завещание (1.5.3), Канкан (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
Extended Разрабатывают зарегистрирования Контроллер
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
Расширенная Разрабатывают Сессии контроллер:
class SessionsController < Devise::SessionsController
layout "sessions"
end
Я понимаю, что я могу добавить некоторый код в контроллер переменного тока или перед фильтром, чтобы проверить зарегистрированного пользователя и перенаправить его. Однако разработка предлагает функциональность, и я не должен этого делать. Я боюсь, что, делая это, я, возможно, игнорирую большую проблему, возможно, с конфигурацией Девиза.
Я ценю любую помощь! Спасибо!
«Придумайте, однако, что предлагает функциональность», откуда вы это знаете? Где он говорит? – clyfe
Я попросил нескольких людей, которые его использовали, а также запустил новое приложение для рельсов и установил его. Devise не позволит вам перейти к знаку или зарегистрировать страницы после входа в систему.Я даже не могу сломать функциональность, чтобы воспроизвести проблему. – Retistic