Jus*_* D. 11 ruby ruby-on-rails devise ruby-on-rails-3
出于某种原因,current_user返回nil在我的模型少控制器(Subscriptions).我没有在互联网上找到任何证明这种行为的理由......
class SubscriptionsController < ApplicationController
def new
...
end
def create
current_user # returns nil
end
end
Run Code Online (Sandbox Code Playgroud)
我有一个csrf元标记:
<meta content="xxx" name="csrf-token">
Run Code Online (Sandbox Code Playgroud)
我可以提供更多代码,但我不确定什么是有用的.
UPDATE
所以感谢评论/答案,我已经将问题指向了一个特定的行动:create.
如果我添加@user = current_user的new,我可以告诉我的当前用户的电子邮件new视图.但是,在我的create控制器中,current_user返回nil.
我create通过表单(提交)访问了该操作.
在提交表单之前,我验证输入,然后向Stripe发送请求以从表单中获取令牌.如果没有错误(验证和条带),我然后发送表单.
这可能是原因吗?
更新2
在我的错误消息中,我的会话转储是空的,而它应该包含current_user信息...
Jus*_* D. 11
事实证明我正在制作的AJAX请求没有携带CSRF令牌.出于这个原因,Rails杀了我的会话.
我加入skip_before_filter :verify_authenticity_token了我的SubscriptionsController,它现在正在工作.它可能不是最安全的解决方案,但它现在有效,所以我继续开发并稍后回到这个问题.
请注意,当您使用form_tag帮助程序创建表单时,它们不会自动生成包含 CSRF 身份验证令牌的隐藏字段。我使用form_tag我有时更喜欢使用的构建的表单遇到了同样的问题。
我通过在表单中包含以下助手解决了这个问题:
<%= hidden_field_tag 'authenticity_token', form_authenticity_token %>
它基本上是一种手动生成CSRF 所需的隐藏字段的方法。
| 归档时间: |
|
| 查看次数: |
21263 次 |
| 最近记录: |