php - 在成功的 ldap 登录时启动 php 会话
问题描述
关于启动 PHP 会话的问题似乎很常见,但我没有遇到任何关于我的问题的描述。
我正在使用 ldap_bind 让用户在我的站点中进行身份验证,并且我只希望他们在身份验证成功的情况下访问登录后面的页面。
为此,我认为我需要创建一个 PHP 会话,但我应该在登录页面的开头创建 PHP 会话,还是应该仅在他们成功通过身份验证时才创建它ldap_bind
?
如果是后者,那么我是否应该只放入session_start();
用于检查提供的用户名和密码是否适用于 LDAP 绑定的 if 语句以及是否应该在'protected'
页面中调用会话用户名?
我的 ldap 绑定非常简单:
$ldapconn = ldap_connect("11.222.33.44")
or die("Could not connect to LDAP server.");
if ($ldapconn) {
// binding to ldap server
$ldapbind = ldap_bind($ldapconn, "uid=$username,cn=users,dc=abc,dc=net", "$password");
// verify binding
if ($ldapbind) {
worked
sessinon_start();
} else {
didnt work } }
我受保护页面顶部的可能代码:
<?php if (isset($_SESSION['username']); {
session_start();
} else {
send back to login?
}
解决方案
您需要在页面开头启动会话并将会话设置为成功的 ldap 绑定。不,您不需要在受保护的页面中调用用户名,因为 ldap 本身就是 Windows 身份验证
session_start();
$ldapconn = ldap_connect("11.222.33.44")
or die("Could not connect to LDAP server.");
if ($ldapconn) {
// binding to ldap server
$ldapbind = ldap_bind($ldapconn, "uid=$username,cn=users,dc=abc,dc=net", "$password");
// verify binding
if ($ldapbind) {
$_SESSION['username']=username;
} else {
//didnt work } }
推荐阅读
- amazon-web-services - kubectl 不会加载新的端点来连接
- javascript - 如何对给定的数组进行排序?
- firebase - 将 Flutter Web 应用程序部署到 Firebase 中的问题
- python - Python Scrapy 爬取分类、子分类产品链接
- ios - 附加元素后的空数组
- java - Flutter Datepicker - 在选择日期关闭,而不是通过 OK 确认按钮?
- javascript - 通过 jquery 或 action="" 混淆调用路由
- next.js - 不禁用 bodyParser 的多部分 JSON 表单数据 json
- go - 移动到 camunda-cloud lib 后无法创建流程实例
- javascript - Webpack Dll 插件问题