Ruby on rails 3 设计+;omniauth设计帮助程序,如当前用户、已登录用户?不起作用
我使用omniauth在Facebook上使用Desive and create登录,但有丢失Desive helper方法访问权限(如当前用户和用户登录)的问题吗?方法不起作用 编辑 身份验证控制器 将_重定向到USercontroller仪表板方法 用户控制器 所以在这里,在检查ApplicationController中的登录方法之后,控件应该转到dashboard方法 ApplicationController中的登录方法 应用程序控制器 当我使用facebook登录时,控制台生成了以下代码Ruby on rails 3 设计+;omniauth设计帮助程序,如当前用户、已登录用户?不起作用,ruby-on-rails-3,devise,omniauth,Ruby On Rails 3,Devise,Omniauth,我使用omniauth在Facebook上使用Desive and create登录,但有丢失Desive helper方法访问权限(如当前用户和用户登录)的问题吗?方法不起作用 编辑 身份验证控制器 将_重定向到USercontroller仪表板方法 用户控制器 所以在这里,在检查ApplicationController中的登录方法之后,控件应该转到dashboard方法 ApplicationController中的登录方法 应用程序控制器 当我使用facebook登录时,控制台生成了以下
Started GET "/users/52/dashboard" for 127.0.0.1 at Thu Mar 29 12:51:55 +0530 2012
Processing by UsersController#dashboard as HTML
Parameters: {"id"=>"52"}
Redirected to http://localhost:3000/
Filter chain halted as :logged_in rendered or redirected
Completed 302 Found in 2ms (ActiveRecord: 0.0ms)
在上面的代码中,控件是从logged_-in方法渲染到root_路径的,但它应该渲染dashboard_路径
我猜是用户登录的?helper不工作我也使用当前用户,而不是生成相同的错误通过Facebook创建用户帐户后,如何登录用户 您应该仍然使用像
登录和重定向这样的设计帮助程序。比如:
user = User.build_from_omniauth(omniauth)
if user.save
sign_in_and_redirect(:user, user)
end
然后您应该能够使用像current\u user
和user\u signed\u in?
这样的帮助程序(只需检查current\u user
是否为零)
看看你的编辑,我的答案仍然有效。您需要做的是使用登录和重定向(:user,user)
,而不仅仅是在会话中设置id。
使用Desive登录后,您可以轻松自定义用户重定向的位置
另一件事,删除这个登录过滤器,设计一个认证用户代码>方法,您可以将其用作before\u过滤器。它会将用户重定向到登录页面,当他们登录时,它会将他们重定向到他们试图访问的页面
您正在使用Desive,因此请尽量利用它,并阅读文档;) 通过Facebook创建用户帐户后,您如何登录用户
您应该仍然使用像登录和重定向这样的设计帮助程序。比如:
user = User.build_from_omniauth(omniauth)
if user.save
sign_in_and_redirect(:user, user)
end
然后您应该能够使用像current\u user
和user\u signed\u in?
这样的帮助程序(只需检查current\u user
是否为零)
看看你的编辑,我的答案仍然有效。您需要做的是使用登录和重定向(:user,user)
,而不仅仅是在会话中设置id。
使用Desive登录后,您可以轻松自定义用户重定向的位置
另一件事,删除这个登录过滤器,设计一个认证用户代码>方法,您可以将其用作before\u过滤器。它会将用户重定向到登录页面,当他们登录时,它会将他们重定向到他们试图访问的页面
您正在使用Desive,因此请尽量利用它,并阅读文档;) 如我所见,user\u signed\u in?
正在工作,但返回false,因为designe user未登录。要解决此问题,只需在控制器操作中将会话id存储替换为designesign\u in
方法:
def create
omniauth = request.env["omniauth.auth"]
user = User.find_by_provider_and_uid(omniauth["provider"], omniauth["uid"]) || User.create_with_omniauth(omniauth)
sign_in(:user, user)
# actually if you really really need that id in the session, you can leave this line too :)
session[:user_id] = user.id
redirect_to dashboard_path(user.id), :notice => "Signed in!"
end
如我所见,user\u signed\u in?
正在工作,但返回false,因为designe用户未登录。要解决此问题,只需在控制器操作中将会话id存储替换为designesign\u in
方法:
def create
omniauth = request.env["omniauth.auth"]
user = User.find_by_provider_and_uid(omniauth["provider"], omniauth["uid"]) || User.create_with_omniauth(omniauth)
sign_in(:user, user)
# actually if you really really need that id in the session, you can leave this line too :)
session[:user_id] = user.id
redirect_to dashboard_path(user.id), :notice => "Signed in!"
end
它们究竟是如何不起作用的?未定义的方法?使用Desive(我的意思是没有FB)正常登录是否有效?感谢您的评论,请查看编辑的部分。它们究竟如何不起作用?未定义的方法?使用Desive(我的意思是没有FB)正常登录是否正常?感谢您的评论,请查看编辑的部分谢谢您的回答,但您能告诉我什么是登录(:user,user)以及它会对设备产生什么影响吗?使用Desive()手动登录用户是一个很好的选择。session[:user_id]的问题在于:第一:designe在session中使用不同的密钥,第二:除了在session中存储id之外,还会发生更多的事情。如果您感兴趣,您可以随时查看内部感谢您的回答您是生命救世主。谢谢您的回答,但您能告诉我什么是登录(:user,user)以及它会对设备产生什么影响吗?使用designe()手动登录用户是一种很好的方法。session[:user_id]的问题在于:第一:designe在session中使用不同的密钥,第二:除了在session中存储id之外,还会发生更多的事情。如果你感兴趣,你可以随时检查你的内在感谢你的答案你是生命的救世主。
def create
omniauth = request.env["omniauth.auth"]
user = User.find_by_provider_and_uid(omniauth["provider"], omniauth["uid"]) || User.create_with_omniauth(omniauth)
sign_in(:user, user)
# actually if you really really need that id in the session, you can leave this line too :)
session[:user_id] = user.id
redirect_to dashboard_path(user.id), :notice => "Signed in!"
end