0
出於某種原因,我以管理員身份登錄後,我被重定向到用戶註冊頁面。如果我以普通用戶身份登錄,則可以獲得管理員擁有的權限,例如創建和刪除帖子的權限。爲什麼我的應用程序要求我在以管理員身份登錄後以用戶身份登錄?
route.rb
Rails.application.routes.draw do
devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }
devise_for :admins, path: 'admins'
root 'home#index'
get '/' => "courses#index", as: :user_root
resources :courses, :lessons
end
application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
before_action :authenticate_user!
private
def after_sign_in_path_for(resource)
courses_path
end
def after_sign_out_path_for(resource)
root_path
end
end
show.html.erb
<div class="panel panel-default">
<div class="panel-heading"><h2><%= @lesson.title %></h2></div>
<div class="panel-body"><%= @lesson.content %></div>
</div>
</p>
<% if admin_signed_in? %>
<%= link_to "delete lesson", lesson_path(@lesson), method: :delete, data: { confirm: 'Are you sure?' } %>
<%= link_to "edit lesson", edit_lesson_path %>
<% end %>
<br>
<br>
<%= link_to "<<back to lesson", course_path(@lesson.course_id)%>
這可能會造成這個問題的任何其他文件?
似乎是一個'Admin'和'User'是不同的車型在您的應用程序。因此'authenticate_user'需要用戶登錄而不是管理員。你有沒有考慮將管理員建模爲普通用戶,但是使用'admin = true'標誌? – spickermann
@spickermann我選擇了使用devise創建多個模型的方式,而不是創建一個User模型並擁有一個admin屬性。所以我假設你說before_action:authenticate_user!部分代碼應該改成別的東西? – Robert