相关疑难解决方法(0)

Rails 4 - 设计,访客用户导致过滤器链停止

我刚刚开始研究Devise用于用户身份验证的Rails 4(4.2.3)应用程序.我希望用户能够在签署upp之前通过创建测试项目并以guest用户身份登录来使用该应用程序.当用户注册(或在)时,我想将测试项目分配给新的当前用户.

我一直在关注Platformatec的这个指南:https://github.com/plataformatec/devise/wiki/How-To : -Create-a-guest-user

创建guest用户工作,但在注册或使用活动guest虚拟机用户会话时,我收到以下错误:

Filter chain halted as :require_no_authentication rendered or redirected
Run Code Online (Sandbox Code Playgroud)

如果我清除我的会话它是有效的.管理我的访客用户的方法如下所示:

def current_or_guest_user
  if current_user
    if session[:guest_user_id] && session[:guest_user_id] != current_user.id
      logging_in
      guest_user(with_retry = false).try(:destroy)
      session[:guest_user_id] = nil
    end
    current_user
  else
    guest_user
  end
end
Run Code Online (Sandbox Code Playgroud)

如前所述,创建访客用户似乎工作得很好.但这种逻辑永远不会发生:

# should delete the guest user and clear the session. 
if current_user
  if session[:guest_user_id] && session[:guest_user_id] != current_user.id
    logging_in
    guest_user(with_retry = false).try(:destroy)
    session[:guest_user_id] = nil
  end
  current_user
Run Code Online (Sandbox Code Playgroud)

我很确定我的访客用户会话与我的新用户冲突并导致此Devise错误(因为访客用户在注册时永远不会被删除):

Filter chain halted as :require_no_authentication rendered or redirected …
Run Code Online (Sandbox Code Playgroud)

ruby authentication ruby-on-rails devise ruby-on-rails-4

7
推荐指数
1
解决办法
554
查看次数

由于用户的 CRUD 实现,Devise::RegistrationsController#create 中的 ActionController::UnknownFormat

意图

我已经创建了一个用户模型,如设计文档所示。后来,我搭建了一个控制器和视图,以便有一个索引和一个可视化界面来处理我的用户。

问题

访问edit_user_path 后,我向数据库提交了一个新用户,SQLite 添加了记录(因此正在保存信息),但是发生了一些事情,我没有被重定向到根目录,而是得到一个异常:

ActionController::UnknownFormat in Devise::RegistrationsController#create
Run Code Online (Sandbox Code Playgroud)

如何修复此异常并使 Rails 流向 root_path?

在这里,我向您添加文件,以便您可以辨别发生了什么:

路由文件

  #RESTful routes
  devise_for :users
  resources :users, :except => [:create]

  resources :clans
  resources :games
  resources :matches

  #Root and debug
  root :to => 'debug#features'
Run Code Online (Sandbox Code Playgroud)

耙路线

                  Prefix Verb   URI Pattern           Controller#Action

        new_user_session GET    /users/sign_in(.:format)   devise/sessions#new
            user_session POST   /users/sign_in(.:format)   devise/sessions#create
    destroy_user_session DELETE /users/sign_out(.:format)   evise/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
                         PATCH  /users/password(.:format)      devise/passwords#update
                         PUT    /users/password(.:format)      devise/passwords#update
cancel_user_registration GET    /users/cancel(.:format)        devise/registrations#cancel
       user_registration …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails devise respond-with ruby-on-rails-4.2

1
推荐指数
2
解决办法
2995
查看次数