Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为什么Warden/Devise在签名时附加资源名称会导致身份验证失败?_Ruby On Rails_Authentication_Devise_Ruby On Rails 3.2_Warden - Fatal编程技术网

Ruby on rails 为什么Warden/Devise在签名时附加资源名称会导致身份验证失败?

Ruby on rails 为什么Warden/Devise在签名时附加资源名称会导致身份验证失败?,ruby-on-rails,authentication,devise,ruby-on-rails-3.2,warden,Ruby On Rails,Authentication,Devise,Ruby On Rails 3.2,Warden,我一直在谷歌上疯狂地搜索这个,到目前为止运气都不好 到目前为止,登录和注销工作正常。他们转向正确的行动。我的问题是当登录失败时。我被发送到一个看似空白的html页面,显示无效的登录名或密码。由创建操作渲染或由创建操作渲染的文本。AFAIK create应仅在失败时重定向或呈现。我有一个自定义控制器,这里列出Desive代码的唯一原因是查看行为发生的位置。我现在真的只需要继承行为,因为我不想在身份验证后重定向到自定义路径 日志内容如下: Started POST "/login.user" for

我一直在谷歌上疯狂地搜索这个,到目前为止运气都不好

到目前为止,登录和注销工作正常。他们转向正确的行动。我的问题是当登录失败时。我被发送到一个看似空白的html页面,显示无效的登录名或密码。由创建操作渲染或由创建操作渲染的文本。AFAIK create应仅在失败时重定向或呈现。我有一个自定义控制器,这里列出Desive代码的唯一原因是查看行为发生的位置。我现在真的只需要继承行为,因为我不想在身份验证后重定向到自定义路径

日志内容如下:

Started POST "/login.user" for 127.0.0.1 at 2012-05-14 15:50:02 -0700
Processing by Users::SessionsController#create as 
Parameters: {"utf8"=>"✓",   "authenticity_token"=>"Pf2+YBqmb5+231nbuD/MeDlz6H7/qOjV4N50WnlJ0rc=", "user"=>{"login"=>"qwdwqqd", "password"=>"[FILTERED]", "remember_me"=>"0"}, "x"=>"40", "y"=>"8"}
Completed 401 Unauthorized in 32ms
devise_for :users, :controllers => {:sessions => "users/sessions", :registrations => "users/registrations"}, :path => '', :path_names => { :sign_in => 'login', :sign_out => 'logout' }
.
.
root :to => 'root#index'
这是我的控制器:

Users::SessionsController < ::Devise::SessionsController

def create
  resource = warden.authenticate!(auth_options)
  set_flash_message(:notice, :signed_in) if is_navigational_format?
  sign_in(resource_name, resource)
  respond_with resource, :location => after_sign_in_path_for(resource)
end
我决定它不会越过这个界限

resource = warden.authenticate!(auth_options)
身份验证失败时的线路

资源名称似乎在管理员失败时以某种方式附加到登录路径。 e、 g./login.user而不是just/login

任何帮助都将不胜感激,提前谢谢


Rails 3.2、Desive 2.0.4、rack 1.4.1、ruby 1.9.3

以防其他人仍在疑惑。我删除了create_user_会话表单中的resource参数。换言之,我是这样做的:

<%= form_for(resource, :as => resource_name, :url => user_session_path(resource)) do |f| %>
为此:

<%= form_for(resource, :as => resource_name, :url => user_session_path) do |f| %>

这就成功了。我觉得很傻,因为我没有早点看这里

你在生产中试过吗?它可能与什么有关?不,我还没有通过开发。这可能会有所帮助,我正在将Rails2应用程序转换为Rails3。我正在使用database_authenticatable。我可以问一下为什么要覆盖会话控制器吗?只是因为我想在Users下使用名称空间,并对视图有更多的控制。我完全可以打电话给super询问身份验证部分。实际上我更喜欢它。我复制了github的代码,只是为了确定罪魁祸首。