如果用户不在数据库中,则阻止登录的可能性 - Rails Devise

问题描述 投票:0回答:1

我正在使用 Devise 和 devise_ldap_authenticatable 来允许用户登录。我只使用会话控制器

class Users::SessionsController < Devise::SessionsController
  layout 'landing'
  before_action :configure_sign_in_params, only: [:new]
  # GET /resource/sign_in
  def new
    super
  end
  def destroy
    super
  end
  protected
  def configure_sign_in_params
    devise_parameter_sanitizer.permit(:sign_in, keys: [:username])
  end
end

我希望只有管理员能够搜索域并添加新用户。现在,域中的任何用户都可以登录到应用程序,即使他们在没有分配角色的情况下无权访问任何资源。这不会改变这样的事实:此类用户的数据会自动保存在模型中并包含在所有用户的列表中。我希望只有之前添加的用户才能登录该应用程序。我想,如果我从控制器中抛出 create 方法,我就会得到这种效果。尽管如此,我在日志中看到它无论如何都被调用了。

如果用户不在数据库中,如何阻止登录?

devise ruby-on-rails-7
1个回答
0
投票

我找到了解决方案。在

devise.rb
中只需将ldap_create_user设置为false:

Devise.setup do |config|
  #some other config
  config.ldap_create_user = false
end

这是

devise_ldap_authenticatable
配置的一部分。

© www.soinside.com 2019 - 2024. All rights reserved.