我使用自定义登录表单进行LDAP身份验证时遇到了一些问题,但它与http_basic_ldap完美配合,因此它不是LDAP的错误。
我的档案: 应用/配置/ security.yml
security:
providers:
my_ldap:
ldap:
service: ldap
base_dn: ou=People,dc=insa-toulouse,dc=fr
search_dn: ~
search_password: ~
default_roles: ROLE_USER
uid_key: uid
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
login_firewall:
pattern: ^/login$
anonymous: ~
main:
logout:
path: /logout
form_login_ldap:
login_path: login
check_path: login_check
service: ldap
dn_string: 'uid={username},ou=People,dc=insa-toulouse,dc=fr'
#anonymous: true
#http_basic_ldap:
# service: ldap
# dn_string: 'uid={username},ou=People,dc=insa-toulouse,dc=fr'
default:
anonymous: ~
请注意,评论的http basic完美无缺!
应用/配置/ services.yml
services:
ldap:
class: Symfony\Component\Ldap\LdapClient
arguments:
- srv-ldap
控制器/ SecurityController.php
<?php
namespace ClubInfo\PizzaBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
class SecurityController extends Controller
{
/**
* @Route("/login", name="login")
*/
public function loginAction(Request $request)
{
$authenticationUtils = $this->get('security.authentication_utils');
// get the login error if there is one
$error = $authenticationUtils->getLastAuthenticationError();
// last username entered by the user
$lastUsername = $authenticationUtils->getLastUsername();
return $this->render(
'ClubInfoPizzaBundle:security:login.html.twig',
array(
// last username entered by the user
'last_username' => $lastUsername,
'error' => $error,
)
);
}
}
和资源/ views / security / login.html.twig
{% if error %}
<div>{{ error.messageKey|trans(error.messageData, 'security') }}</div>
{% endif %}
<form action="{{ path('login') }}" method="post">
<label for="username">Username:</label>
<input type="text" id="username" name="_username" value="{{ last_username }}" />
<label for="password">Password:</label>
<input type="password" id="password" name="_password" />
{#
If you want to control the URL the user
is redirected to on success (more details below)
<input type="hidden" name="_target_path" value="/account" />
#}
<button type="submit">login</button>
</form>
感谢您的回答;)