최근에 v0.5.1에서 ActiveAdmin을 업그레이드했습니다. v.0.6.2. 생성기를 실행하여 구성을 업그레이드하고 설정을 기존 파일과 병합했습니다.ActiveAdmin을 v.0.6.2로 업그레이드 한 후 RoutingError
rails generate active_admin:install User
ActiveAdmin 인터페이스가 작동하는 것 같습니다. 그러나 이전에는 작동했던 사양을 더 이상 성공적으로 실행할 수 없습니다. 이 rake routes
의 관련 부분이 앞에있는
# config/routes.rb
MyApp::Application.routes.draw do
namespace :api, defaults: {format: :json} do
namespace :v1 do
resources :sessions, only: [:create, :destroy]
resources :users, only: [:create]
end
end
# Configuration when using ActiveAdmin v.0.5.1
# devise_for :users, controllers: { sessions: "sessions" }
config = ActiveAdmin::Devise.config
config[:controllers][:sessions] = "sessions"
devise_for :users, config
ActiveAdmin.routes(self)
root :to => "home#index"
end
...
# spec/features/users/active_admin_spec.rb
require 'spec_helper'
describe 'Active Admin' do
before(:all) do
I18n.locale = :en
end
it "rejects a reqular user" do
@user = create(:user)
visit '/users/sign_out'
visit '/users/sign_in'
fill_in I18n.t('devise.sessions.new.email'), with: @user.email
fill_in I18n.t('devise.sessions.new.password'), with: @user.password
click_button I18n.t('devise.sessions.new.sign_in')
visit "/admin"
expect(page).not_to have_content "Dashboard"
expect(page).to have_content "Unauthorized Access!"
end
end
: 실패 동작을 논의하기 위해 예로서
Failure/Error: visit '/users/sign_out'
ActionController::RoutingError:
No route matches [GET] "https://stackoverflow.com/users/sign_out"
다음 사양의 역할 : 나는 ActionController::RoutingError
을받을 업그레이드 :
new_user_session GET /users/sign_in(.:format) sessions#new
user_session POST /users/sign_in(.:format) sessions#create
destroy_user_session DELETE /users/sign_out(.:format) sessions#destroy
user_password POST /users/password(.:format) devise/passwords#create
new_user_password GET /users/password/new(.:format) devise/passwords#new
edit_user_password GET /users/password/edit(.:format) devise/passwords#edit
PUT /users/password(.:format) devise/passwords#update
cancel_user_registration GET /users/cancel(.:format) devise/registrations#cancel
user_registration POST /users(.:format) devise/registrations#create
new_user_registration GET /users/sign_up(.:format) devise/registrations#new
edit_user_registration GET /users/edit(.:format) devise/registrations#edit
PUT /users(.:format) devise/registrations#update
DELETE /users(.:format) devise/registrations#destroy
user_confirmation POST /users/confirmation(.:format) devise/confirmations#create
new_user_confirmation GET /users/confirmation/new(.:format) devise/confirmations#new
GET /users/confirmation(.:format) devise/confirmations#show
admin_root /admin(.:format) admin/dashboard#index
admin_dashboard /admin/dashboard(.:format) admin/dashboard#index
batch_action_admin_users POST /admin/users/batch_action(.:format) admin/users#batch_action
admin_users GET /admin/users(.:format) admin/users#index
POST /admin/users(.:format) admin/users#create
new_admin_user GET /admin/users/new(.:format) admin/users#new
edit_admin_user GET /admin/users/:id/edit(.:format) admin/users#edit
admin_user GET /admin/users/:id(.:format) admin/users#show
PUT /admin/users/:id(.:format) admin/users#update
DELETE /admin/users/:id(.:format) admin/users#destroy
batch_action_admin_comments POST /admin/comments/batch_action(.:format) admin/comments#batch_action
admin_comments GET /admin/comments(.:format) admin/comments#index
POST /admin/comments(.:format) admin/comments#create
admin_comment GET /admin/comments/:id(.:format) admin/comments#show
이 업그레이드 한 후 rake routes
의 관련 부분입니다 :
new_user_session GET /admin/login(.:format) sessions#new
user_session POST /admin/login(.:format) sessions#create
destroy_user_session DELETE|GET /admin/logout(.:format) sessions#destroy
user_password POST /admin/password(.:format) active_admin/devise/passwords#create
new_user_password GET /admin/password/new(.:format) active_admin/devise/passwords#new
edit_user_password GET /admin/password/edit(.:format) active_admin/devise/passwords#edit
PUT /admin/password(.:format) active_admin/devise/passwords#update
cancel_user_registration GET /admin/cancel(.:format) devise/registrations#cancel
user_registration POST /admin(.:format) devise/registrations#create
new_user_registration GET /admin/sign_up(.:format) devise/registrations#new
edit_user_registration GET /admin/edit(.:format) devise/registrations#edit
PUT /admin(.:format) devise/registrations#update
DELETE /admin(.:format) devise/registrations#destroy
user_confirmation POST /admin/confirmation(.:format) devise/confirmations#create
new_user_confirmation GET /admin/confirmation/new(.:format) devise/confirmations#new
GET /admin/confirmation(.:format) devise/confirmations#show
admin_root /admin(.:format) admin/dashboard#index
admin_dashboard GET /admin/dashboard(.:format) admin/dashboard#index
batch_action_admin_users POST /admin/users/batch_action(.:format) admin/users#batch_action
admin_users GET /admin/users(.:format) admin/users#index
POST /admin/users(.:format) admin/users#create
new_admin_user GET /admin/users/new(.:format) admin/users#new
edit_admin_user GET /admin/users/:id/edit(.:format) admin/users#edit
admin_user GET /admin/users/:id(.:format) admin/users#show
PUT /admin/users/:id(.:format) admin/users#update
DELETE /admin/users/:id(.:format) admin/users#destroy
batch_action_admin_comments POST /admin/comments/batch_action(.:format) admin/comments#batch_action
admin_comments GET /admin/comments(.:format) admin/comments#index
POST /admin/comments(.:format) admin/comments#create
admin_comment GET /admin/comments/:id(.:format) admin/comments#show
IT는 SessionsController
을 무시하는 것 같다.
나는 Devise v.2.2.7을 사용합니다.
인증 버그
난 그냥이 구성 이 관리자가 아닌 사용자에 대한 ActiveAdmin을에 액세스 할 수 있습니다 것으로 나타났습니다. 그래서 여기서 수정해야 할 것이 더 있습니다. 일반 사용자로 로그인하여 직접 시도하면 /admin
을 방문하십시오.
인증 버그 ActiveAdmin을의 v.0.6.2에 문제가 발생했습니다 결코
해결. 나는 단순히 원래 설정 한 구성을 파기했다. 그 당시 나는 how to set up ActiveAdmin and Devise with a single user model에 관한 튜토리얼을 따랐다.rails generate active_admin:install User
을 실행할 때
# config/initializers/active_admin.rb
config.authentication_method = :authenticate_user!
이 구성이 생성됩니다 이것에
# config/initializers/active_admin.rb
config.authentication_method = :authenticate_active_admin_user!
: 기본적으로, 실수로 다음 매개 변수를 대체했다.
마지막으로, 나는 Leger has served the correct configuration이라고 말할 수 있습니다. 모든 것이 지금 작동하고 있기 때문에 귀하의 답변을 수락 할 수있어서 기쁩니다 (제가 말할 수있는 한).
주문을 변경하면 같은 오류가 발생합니다. – JJD
관리자가 아닌 사용자에 대한 액세스를 제한하려면 http://stackoverflow.com/questions/9415884/how-to-limit-acces-to-active-admin-to-admin-users를 확인하십시오. 도움이 되길 바랍니다. – Leger