2017-07-08 30 views
0

我正在创建一个基本的Devise/Rails授权设置,并且无法用已知/验证的电子邮件/密码值登录用户。据我所知,这里的普通情况并不是这样。签到PARAMS显示正确的数据传递给服务器:使用Rails 5.1.2和Devise 4.3.0登录失败已完成401未经授权(用户验证)

开始POST “/用户/ sign_in” 为:: 1,在2017年7月8日14时34分45秒-0400 处理由设计:: SessionsController#创建为HTML参数: {“utf8”=>“✓”,“authenticity_token”=>“Fa7u5V ... lq81XEw ==”, “user”=> {“email”=>“[email protected]” “密码”=> “[FILTERED]”, “remember_me”=> “0”}, “提交”=> “登录”}

服务器输出指示用户的存在(基于在具有已知电子邮件值的SELECT语句上):

用户负载(0.7ms)SELECT“users”。* FROM“users”WHERE “users”。“email”= $ 1 LIMIT $ 2 [[“email”,“[email protected]”], “限制”, 11] @user:#]>

但是当设计该检查的语句,则返回 “已完成401未授权......”

用户之后立即运行相同的查询加载(0.6ms)SELECT“users”。* FROM“users”WHERE “users”。“email”= $ 1 ORDER BY“users”。“id”ASC LIMIT $ 2 [[“email”, “[email protected]”],[ “限制”,1]]已完成401未经授权在14ms的 (ActiveRecord的:1.9ms)

这里是routes.rb中和user.rb模型文件:

======= routes.rb ======= 
Rails.application.routes.draw do 
    get "/" => "users#home" 
    devise_for :users 
    resources :users do 
     resources :posts 
    end 
end 

======= user.rb ======= 
class User < ApplicationRecord 
    devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable 
    has_many :posts 
    has_many :comments 
end 

什么可能导致这种授权的缺乏?任何帮助将不胜感激!

回答

0

查找您的控制器和应用控制器的语句如cuurent_userbefore_action

class UsersController < ApplicationController 
    before_filter :login_required, :only => [:method1,:method2] 
    ... 
end 

可能是方法你尝试调用被列为需要验证,但您还没有登录。

你还可以发布你的控制器的摘录与其中的方法吗?

另一个可能的问题是您的路线可能被错误地定义:

相关问题