【问题标题】:Ldap bind message in LaravelLaravel 中的 Ldap 绑定消息
【发布时间】:2020-10-31 14:12:06
【问题描述】:

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

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

当我输入正确的用户名和密码时,一切似乎都很好。输入错误密码时出现问题,页面将显示“ErrorException ldap_bind(): Unable to bind to server: Invalid credentials” 并且页面还显示所有登录功能代码。

如何在页面不显示 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 laravel ldap


    【解决方案1】:

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

    在你的情况下,类似于:

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

    【讨论】:

    • 非常感谢。有用。我也尝试使用 adldap2 框架,但它不起作用。也许我不熟悉,没有人可以指导如何使用它。再一次,谢谢你:)
    • 使用错误抑制在网站上不显示任何消息是一个坏习惯...
    • 作为一般规则,是的。但是,当您特别不希望向您的用户提供这些错误消息以支持我们自己的错误处理时,这是完全可以接受的。定制信息是他所追求的。就您而言 - 不显示 any 错误肯定不是一个好主意。因此他显示了一个更具体的错误。
    【解决方案2】:

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

    在生产网站上,PHP.ini 文件(使用 phpinfo 页面查找 PHP.ini 文件的位置)应将 display_errorsdisplay_startup_errors 设置为 false,但将 error_log 设置为 euther syslog或指向错误日志文件的路径。

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-10
      • 1970-01-01
      • 2018-08-12
      • 1970-01-01
      相关资源
      最近更新 更多