我查看了 Sinatra 文档,他们似乎只引用了 HTTP 身份验证。我正在寻找一种非常简单的方法来根据通过 LDAP 服务器授权/验证的用户来控制对路由的访问。
我已经构建了一个执行 LDAP 位的类,如果用户已成功通过身份验证,则返回一个 LDAP 对象,如果没有,则返回 nil:
>>DirectoryUser.authenticate('user', 'password')
#<DirectoryUser:0x007ffb589a2328>
我可以使用它来确定他们是否已成功通过身份验证。
作为下一步,我想将其拼接到一个简单的 Sinatra 应用程序中,该应用程序提供了一个表单来收集 LDAP 用户和密码:
require 'directoryUser'
require 'sinatra'
enable :sessions
get '/form' do
username = params[:username]
password = params[:password]
haml :form
end
然后我只想在“DirectoryUser”对象存在的情况下允许路由:
get '/protected' do # Only if DirectoryUser object exists
"This route is protected"
end
get '/unprotected' do
"This route is unprotected"
end
我花了几个小时试图找到这个问题的答案,但到目前为止,似乎找不到任何对我有用的东西。