Laravel 中的 Ldap 绑定消息

Ldap bind message in Laravel

我有一个问题。目前我正在使用 ldap 连接。

我使用的是手动 ldap 代码,因此 ldap 连接没有问题。我与ldap的连接是成功的。

输入正确的用户名和密码后一切正常。当我输入错误的密码时出现问题,页面将显示“ErrorException ldap_bind():无法绑定到服务器:无效的凭据”页面还显示所有登录功能代码。

如何在页面不显示 ErrorException 的情况下显示正确的错误消息?供参考,我没有使用任何 ldap 安装框架。

例如我的代码:

public function process_login(Request $request)
{
  $username = $request->username;
  $password = $request->password;

  $ldaphost= "xxxx";
  $ldapconn = ldap_connect($ldaphost) or die("That LDAP-URI was not parseable");
  $ldap_credential= 'uid='.$username.',cn=xxx';
  $ldappass = $password;

if ($ldapconn) 
{  
  $ldapbind = ldap_bind($ldapconn, $ldap_credential, $ldappass);

  if ($ldapbind) {
     return redirect()->route('dashboard');
  }
  else
      {
        return Redirect::back()->withErrors(['msg', 'Wrong Password/Username']);
      }
}
}

login.blade:

@if($errors->any())
        <h4>{{$errors->first()}}</h4>
@endif

谁能帮帮我?

我和许多其他人 运行 遇到了来自 PHP 的 LDAP 身份验证的相同问题。完全同意,显示这些错误非常草率。信不信由你,最常见的解决方案之一就是使用标准 PHP@ 静默绑定进程,以避免显示不需要的错误消息。

在你的情况下,类似于:

if (@ldap_bind($ldapconn, $ldap_credential, $ldappass)) {
   return redirect()->route('dashboard');
}
else
{
    return Redirect::back()->withErrors(['msg', 'Wrong Password/Username']);
}

当您在您的网站上看到来自 PHP 的消息时,通常意味着您的 PHP 安装配置错误。

在生产网站上,PHP.ini 文件(使用 phpinfo-page 查找 PHP.ini 文件的位置)应将 display_errorsdisplay_startup_errors 设置为falseerror_logsyslog 或 error-log 文件的路径。

此外,您不应将 error_reporting 设置为 0,因为这样您将很难调试您的生产站点。

如果您不希望来自 ldap_bind 的消息出现在您的错误日志中,您应该使用 set_error_handler 设置一个错误处理程序,专门删除这条消息,可能只是为了这个一个函数调用,并重置原始错误处理程序。

特别是在 ldap_bind 的情况下,否则您可能会在调试所发生的事情时遇到问题,因为这通常是实际打开与服务器连接的第一个命令,因此消息中会出现很多连接问题从这个函数。当您使用 @

将来自该函数的每条消息静音时,您将永远看不到它