我正在使用 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.rb
中只需将ldap_create_user设置为false:
Devise.setup do |config|
#some other config
config.ldap_create_user = false
end
这是
devise_ldap_authenticatable
配置的一部分。