首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >warden.authenticate!(auth_options)返回nil

warden.authenticate!(auth_options)返回nil
EN

Stack Overflow用户
提问于 2021-01-27 14:10:00
回答 1查看 272关注 0票数 0

Rails 5.1。嗨。目前out应用程序已经实现了我们已经实现的身份验证系统,我们将迁移到devise。我在这里试图让设计登录到work.Here是自定义sessions_controller的代码

代码语言:javascript
复制
class Users::SessionsController < Devise::SessionsController
  include ExpireExistingToken

  def new
    super
  end

  def create
    self.resource = warden.authenticate!(auth_options)
    set_flash_message!(:notice, :signed_in)
    sign_in(resource_name, resource)
    yield resource if block_given?
    resource.update(language: Constant::SUPPORTED_LANGUAGES.key(params['locale'])) if params['locale'].present?
    resource.send_otp(force_expire: true) if resource.email_verified?
    respond_with resource, location: after_sign_in_path_for(resource)
    flash.delete(:notice)
  end

  def destroy
    session.delete(:is_otp_verified)
    super
  end
end
代码语言:javascript
复制
auth_options
{:scope=>:user, :recall=>"users/sessions#new"}
代码语言:javascript
复制
Started GET "/cable/" [WebSocket] for 127.0.0.1 at 2021-01-27 16:07:46 +0530
An unauthorized connection attempt was rejected
Processing by Users::SessionsController#new as HTML
Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: keep-alive, Upgrade, HTTP_UPGRADE: websocket)
Failed to upgrade to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: keep-alive, Upgrade, HTTP_UPGRADE: websocket)
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"wP84hj41ml3YlPaJpTBfnT985MSSpEkbaOvvQaNvxwesoSe19JWobaD4IQEZrm6btpWgJ5vldd9E0VzmsOIV5Q==", "user"=>{"email"=>"user12@gmail.com", "password"=>"[FILTERED]"}, "button"=>"", "locale"=>"en"}
Finished "/cable/" [WebSocket] for 127.0.0.1 at 2021-01-27 16:07:46 +0530
Finished "/cable/" [WebSocket] for 127.0.0.1 at 2021-01-27 16:07:46 +0530
An unauthorized connection attempt was rejected
Finished "/cable/" [WebSocket] for 127.0.0.1 at 2021-01-27 16:07:46 +0530
  Rendering devise/sessions/new.html.haml within layouts/pre_authentication
Failed to upgrade to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: keep-alive, Upgrade, HTTP_UPGRADE: websocket)
  Rendered devise/sessions/new.html.haml within layouts/pre_authentication (3.7ms)
Finished "/cable/" [WebSocket] for 127.0.0.1 at 2021-01-27 16:07:46 +0530
  Rendered shared/_flash.haml (2.0ms)
  Rendered shared/_language_selector.html.haml (2.9ms)
Completed 200 OK in 159ms (Views: 30.1ms | ActiveRecord: 0.0ms)

这里的问题是warden.authenticate!(auth_options)返回nil。我检查了我的另一个更简单的应用程序,无论电子邮件/密码是否正确,我都会扫描数据库进行身份验证。如何让Warden/Devise实际执行select语句来检出数据库?以下是定义的路由-

代码语言:javascript
复制
scope 'web' do
     scope '/:locale' do
       devise_for :users, controllers: {
         passwords: 'users/passwords',
         sessions: 'users/sessions',
         registrations: 'users/registrations'
       }
     end
   end

(如果我可以粘贴任何东西来帮助你们,我会粘贴的)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-30 00:28:44

看起来问题出在/cable操作上,它以某种方式阻止了current authentication进程或操作的完成。你可以通过在你的应用中评论/cable来验证这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65913720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档