这是范围/路线问题吗? current_user在用户控制器中工作。在外部,在另一个控制器/视图中,这将返回nil。即使用户已登录,user_signed_in?方法返回false。我知道我错过了什么,只是无法指出我的手指。这样做的正确方法是什么?
答案 0 :(得分:6)
它适用于其他控制器。一个疯狂的猜测:也许其他控制器需要:before_filter:authenticate_user!
答案 1 :(得分:4)
发现问题。这是会议。显然,current_user和其他方法由于cookie而表现不正常。我有子域名,问题是因为https://github.com/fortuity/rails3-subdomain-devise/wiki/Tutorial-%28Walkthrough%29。这个git教程有所帮助。
谢谢!
答案 2 :(得分:2)
我遇到了同样的问题,我需要将它放在我的布局中,我使用的是与应用程序不同的布局:
= csrf_meta_tags
答案 3 :(得分:0)
同样的事情发生在我身上,但问题是当我发出ajax请求时。这修好了它(以haml为单位)。这可以确保所有ajax请求都带有csrf令牌:
:coffee
require ['jquery'], ($)->
$.ajaxSetup
headers:
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
确保它在标题中:
= csrf_meta_tags