【问题标题】:destroy admin session resulting in http get request rails 4销毁管理会话导致 http 获取请求 rails 4
【发布时间】:2015-02-01 17:13:29
【问题描述】:

我的 Rails 4 应用程序有一个用户和管理员模型。

我已经为通过 rails_admin gem 创建的 Admin 模型实现了设计。当我尝试注销时出现问题:应用程序重定向到意外页面,并且日志显示不断发出 GET 请求,而不是 DELETE 请求。

经过研究,我确保注销链接具有如下指定的删除方法

  • :delete %>
  • 在 devise.rb 中,注销是通过 delete 指定的 config.sign_out_via = :删除

    路线如下

    Mvc::Application.routes.draw do
      resources :users
      devise_for :admins
      mount RailsAdmin::Engine => '/admin', as: 'rails_admin'
    root "users#index"
    end
    

    我完全可以毫无问题地登录,但是当注销请求在浏览器中呈现到 /admins/sign_out 时,会话仍然处于活动状态,并且页面仍然显示管理仪表板。有趣的是,flash 消息显示“找不到模型 'S'”,我对日志显示的内容感到非常困惑

    Started GET "/admins/sign_out" for 127.0.0.1 at 2014-12-03 23:10:50 +0000
    Processing by RailsAdmin::MainController#show as HTML
    Parameters: {"model_name"=>"s", "id"=>"sign_out"}
    [RailsAdmin] Could not load model S, assuming model is non existing. (uninitialized constant S)
    
    
    Gemfile
    source 'https://rubygems.org'
    
    gem 'rails', '4.0.3'
    gem 'sqlite3'
    gem 'bootstrap-sass', '~> 3.3.1'
    gem 'uglifier', '>= 1.3.0'
    gem 'jquery-rails'
    gem 'turbolinks'
    gem 'jbuilder', '~> 1.2'
    gem 'simple_form'
    gem 'bcrypt-ruby'
    gem 'devise'
    gem 'rails_admin'
    
    
    group :assets do
     gem 'sass-rails', '~> 4.0.0' 
     gem 'coffee-rails', '~> 4.0.0'
     gem 'uglifier', '>= 1.3.0'
    
    end
    
    group :doc do
    
     gem 'sdoc', require: false
    end
    
    group :development do
     gem 'better_errors', '~> 2.0.0'
    end
    

    我想要实现的是,当执行注销时,管理员会话被破坏,管理员被重定向到 root_path。我注意到我目前只有应用程序和用户控制器,没有会话控制器。据我了解,设计引擎应该开箱即用地进行会话管理。有什么建议吗?

    【问题讨论】:

    • :method => :delete 功能来自 jquery_ujs。你的项目中存在吗?您可能需要将 //= require jquery_ujs 添加到您的 application.js 文件中
    • RailsAdmin 正在从 Devise 劫持您的路由,然后因为它无法识别 /admins/sign_out,所以将其解释为 /admins/:id,路由到 Show 方法,并尝试将模型与“sign_out”的 ID。你需要找到一种方法来解开 RailsAdmin 和 Devise 的纠缠,让路由按照你需要的方式工作。
    • 感谢 Joseph,这很有道理,我会继续朝这个方向努力。

    标签: ruby-on-rails ruby devise rails-admin


    【解决方案1】:

    您似乎没有使用应用程序布局文件。 所以尝试在html文件中加入如下sn-p的代码

    <head>
      <title>Training</title>
      <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
      <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
      <%= csrf_meta_tags %>
    </head>

    【讨论】:

      猜你喜欢
      • 2018-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-30
      • 2011-11-25
      • 1970-01-01
      • 2014-05-25
      相关资源
      最近更新 更多