【问题标题】:Rails 4.0 User Authentication With Devise + Omniauth使用 Devise + Omniauth 的 Rails 4.0 用户身份验证
【发布时间】:2013-08-20 00:35:09
【问题描述】:

我知道我还没有设置 Facebook(这似乎是一个相似但不同的野兽),但目前,根据我的理解,我应该能够使用我的 Twitter 用户名登录,它说“你登录了!”并在它说的地方显示我的用户名

<span>Logged in as <%= current_user.username %>.</span>

另外,稍微单独说明一下,我很想知道为什么flash.notice 不适合我。这在 Rails 4 中是否已弃用,还是我的 application.html.erb 文件中缺少某些内容供他们显示?

我的工作地点:http://railscasts.com/episodes/235-devise-and-omniauth-revised

这是我目前正在使用的代码。

https://github.com/erosenberg/devise-app

编辑:好的,抱歉我不是很具体,我想我的文字墙会得到更少的回复,所以我缩短了它。

基本上,我正在尝试与 Railscast 合作,以使 Devise 与 Omniauth 合作。过去,我让 Omniauth 和 Devise 自己工作,将它们组合在一起是一个全新的挑战——考虑到每个教程都告诉我以不同的方式来做,而且它们似乎都已经过时了。 我设置它的方式是 RailsCast 推荐的方式——添加一个 OmniAuthCallbacks 控制器,但这似乎没有任何作用。 当我尝试使用我的应用程序使用 Twitter 登录时,它只会将我带回登录页面,但是,当我尝试使用电子邮件地址登录时,它会起作用并将我带到我创建的“仪表板” .由于某种原因,Twitter 登录不起作用,我也希望能够使用 flash[:notice] 进行测试,但由于某种原因也不起作用。 我还想让 Facebook 登录正常工作,并让用户能够将他们的帐户与 Twitter 或 Facebook 合并。

如果您需要我更详细地解释,我也可以尝试这样做。谢谢!

【问题讨论】:

  • 我们需要更多细节。请注意,我们不是您,我们不了解您的项目。请描述背景、您需要什么、您期望发生什么以及正在发生什么。
  • 不确定这里的问题是什么,您需要更加明确。无论如何,我刚刚检查了您的代码,this 是错误的。该代码应包含在用户模型类中。检查this tutorial
  • 我编辑了描述,希望它更容易理解,我的错。我现在会看那个教程。

标签: ruby-on-rails ruby devise omniauth ruby-on-rails-4


【解决方案1】:

在您的 config/initializers/devise.rb 中您没有更改配置。

config.authentication_keys = [ :email ]

这意味着它默认使用电子邮件进行身份验证。因此,您缺少的代码正在保存用户的电子邮件或验证失败。

您可以更改 authentication_key 或保存电子邮件。

编辑

在我克隆应用程序并在我的机器上运行之后就可以了。我确定这是因为电子邮件验证失败。因为当您使用设计生成器创建迁移文件here 时,设计验证电子邮件必须默认存在。

t.string :email,              :null => false, :default => ""

因此您可以回滚以将此迁移更改为远程 ':null => false'。之后将此代码添加到用户用户模型:

def email_required?
  false
end

并且不要忘记更改您的配置以获得正确的身份验证密钥。

config.case_insensitive_keys = [ :username ]
config.strip_whitespace_keys = [ :username ]

【讨论】:

  • 我尝试取消注释,但没有奏效。看起来它在正确的轨道上!
  • 尝试 config.authentication_keys = [ :username ]。
  • 更改设置后是否重新启动应用程序?
  • 是的,我确实在更改后重新启动了我的应用程序。
  • 哇,成功了!非常感谢!那一定是 Devise 的更新或其他什么,因为教程中根本没有提到它。这是我不喜欢大多数 Rails 教程的一件事:有时他们会说,“它只是工作!”并且不解释它是如何或为什么这样做的,但故障排除肯定让我思考更多。
猜你喜欢
  • 2012-11-04
  • 2016-02-26
  • 1970-01-01
  • 2011-05-30
  • 1970-01-01
  • 1970-01-01
  • 2015-03-10
  • 2012-07-20
  • 1970-01-01
相关资源
最近更新 更多