【问题标题】:How to access current user with Devise如何使用 Devise 访问当前用户
【发布时间】:2016-03-15 17:40:56
【问题描述】:

我在我的应用程序中使用 devise 和 ldap 对用户进行身份验证。我已经建立并设计了用户模型。我可以正确登录和注销用户,但我无法访问内置助手的任何信息;当前用户。

我希望应用程序的主页在页面顶部显示当前用户名。我在用户表中创建了名为 display_name 的列。

这是我想要工作的代码:

<% if user_signed_in? %>
 <div> <%= current_user.display_name %> </div>
<% end %>

当我使用 byebug 并尝试访问当前用户时,它返回 nil。

有人对我如何访问当前用户信息有任何建议吗?

更新

我尝试使用:&lt;% if signed_in %&gt; 但我仍然遇到同样的错误:nil:NilClass 的未定义方法“display_name”

【问题讨论】:

  • 试试&lt;% if signed_in? %&gt; 而不是&lt;% user_signed_in? %&gt;
  • 查看我在帖子上的更新。

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


【解决方案1】:

devise 文档说:

如果您的设计模型不是用户,请替换“_user” 使用“_yourmodel”。

你的模特是User吗?如果没有,则需要使用适当的辅助方法。

【讨论】:

    【解决方案2】:

    您使用的是哪个 LDAP gem? devise_ldap_authenticatable ?

    您需要在 ApplicationController 中定义一个实例变量@current_user,并根据经过身份验证的 LDAP 帐户将其设置为正确的用户记录。

    然后,登录时需要设置@current_user的值,退出时需要设置为nil。

    因此,对于登录和注销,您必须在 Session#create 和 Session#destroy 中实现这一点

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-22
    相关资源
    最近更新 更多