मुझे लगता है कि मैंने (सिद्धांत) Symfony में प्रमाणीकरण के बारे में सभी पदों में सभी कोडों का प्रयास किया है 2. और मैं इसे काम नहीं कर सकता। जब मैं in_memory प्रदाता का उपयोग करता हूं तो सब ठीक काम करता है। मैं पीआर 8 का उपयोग कर रहा हूं।सिम्फनी 2 प्रमाणीकरण (सिद्धांत) के साथ प्रमाणीकरण
मेरे security.yml
security:
encoders:
Partners\FrontendBundle\Entity\User: plaintext
Symfony\Component\Security\Core\User\User: plaintext
providers:
main:
entity: { class: FrontendBundle:User, property: username }
# in_memory:
# users:
# sergi: { password: boo123, roles: [ 'ROLE_USER' ] }
firewalls:
main:
pattern: /.*
form_login: true
anonymous: true
logout: true
access_control:
- { path: /docs.*, role: ROLE_USER }
- { path: /control.*, role: ROLE_USER }
- { path: /.*, role: IS_AUTHENTICATED_ANONYMOUSLY }
role_hierarchy:
ROLE_ADMIN: ROLE_USER
मेरे उपयोगकर्ता इकाई
<?php
namespace Partners\FrontendBundle\Entity;
use Symfony\Component\Security\Core\User\UserInterface;
use Partners\FrontendBundle\Repository\UserRepository;
/**
* @orm:Entity(repositoryClass="Partners\FrontendBundle\Repository
\UserRepository")
* @orm:Table(name="users")
*/
class User implements UserInterface
{
/**
* @orm:Id
* @orm:Column(type="integer")
* @orm:GeneratedValue(strategy="IDENTITY")
*/
protected $id;
/**
* @orm:Column(type="string", length="32", unique=true)
*/
protected $username;
/**
* @orm:Column(type="string", length="255", unique=true)
*/
protected $email;
/**
* @orm:Column(type="string", length="128")
*/
protected $password;
/**
* @orm:Column(type="string", length="128")
*/
protected $organization;
/**
* @orm:Column(type="string", length="128")
*/
protected $contact;
/**
* @orm:Column(type="string", length="16")
*/
protected $phone;
/**
* @orm:Column(type="string", length="10")
*/
protected $cid;
/**
* @orm:Column(type="smallint")
*/
protected $status;
public function getId()
{
return $this->id;
}
public function setId($id)
{
$this->id = $id;
}
public function getUsername()
{
return $this->username;
}
public function setUsername($username)
{
$this->username = $username;
}
public function getPassword()
{
return $this->password;
}
public function setPassword($password)
{
$this->password = $password;
}
public function setEmail($email)
{
$this->email = $email;
}
public function getEmail()
{
return $this->email;
}
public function setPhone($phone)
{
$this->phone = $phone;
}
public function getPhone()
{
return $this->phone;
}
public function setContact($contact)
{
$this->contact = $contact;
}
public function getContact()
{
return $this->contact;
}
public function setOrganization($org)
{
$this->organization = $org;
}
public function getOrganization()
{
return $this->organization;
}
public function setCid($cid)
{
$this->cid = $cid;
}
public function getCid()
{
return $this->cid;
}
public function setStatus($status)
{
$this->status = $status;
}
public function getStatus()
{
return $this->status;
}
/**
* Implementing the UserInterface interface
*/
public function __toString()
{
return $this->getUsername();
}
public function getRoles()
{
return array('ROLE_USER');
}
public function eraseCredentials()
{
return false;
}
public function getSalt()
{
return $this->getId();
}
/**
* equals.
*
* @param UserInterface $account
* @return bool
*/
public function equals(UserInterface $account)
{
if ($account->getUsername() != $this->getUsername) {
return false;
}
if ($account->getEmail() != $this->getEmail) {
return false;
}
return true;
}
}
UserRepository
<?php
namespace Partners\FrontendBundle\Repository;
use Doctrine\ORM\EntityRepository;
use Symfony\Component\Security\Core\User\UserProviderInterface;
use Symfony\Component\Security\Core\User\UserInterface;
class UserRepository extends EntityRepository implements
UserProviderInterface
{
const CREATED = 0;
const ACTIVE = 10;
const INACTIVE = 20;
/**
* loadUserByUsername.
*
* @param string $username
* @return Partners\FrontendBundle\Entity\User
*/
public function loadUserByUsername($username)
{
return $this->findOneBy(array('username' => $username));
}
function loadUser(UserInterface $user)
{
return $user;
}
function loadUserByAccount(AccountInterface $account)
{
return $this->loadUserByUsername($account->getUsername());
}
public function supportsClass($class)
{
return true;
}
}
जब मैं भरने लॉगिन $ त्रुटि में त्रुटि के रूप में = $ this-> get ('अनुरोध') -> getSession() -> मिल (SecurityContext :: AUTHENTICATION_ERROR); है:
exception 'Symfony\Component\Security\Core\Exception
\BadCredentialsException' with message 'Bad credentials' in /var/www/
inspiring/trunk/Symfony/vendor/symfony/src/Symfony/Component/Security/
Core/Authentication/Provider/DaoAuthenticationProvider.php:66 Stack
trace: #0 /var/www/inspiring/trunk/Symfony/vendor/symfony/src/Symfony/
Component/HttpFoundation/SessionStorage/NativeSessionStorage.php(81):
session_start() #1 /var/www/inspiring/trunk/Symfony/app/cache/dev/
classes-53824.php(284): Symfony\Component\HttpFoundation\SessionStorage
\NativeSessionStorage->start() #2 /var/www/inspiring/trunk/Symfony/app/
cache/dev/appDevDebugProjectContainer.php(1151): Symfony\Component
\HttpFoundation\Session->start() #3 /var/www/inspiring/trunk/Symfony/
app/bootstrap.php.cache(109): appDevDebugProjectContainer-
>getSessionService() #4 /var/www/inspiring/trunk/Symfony/app/cache/dev/
classes-53824.php(1553): Symfony\Component\DependencyInjection
\Container->get('session') #5 /var/www/inspiring/trunk/Symfony/app/
cache/dev/classes-53824.php(1544): Symfony\Bundle\FrameworkBundle
\RequestListener->initializeSession(Object(Symfony\Component
\HttpFoundation\Request), true) #6 /var/www/inspiring/trunk/Symfony/
app/cache/dev/classes-53824.php(1214): Symfony\Bundle\FrameworkBundle
\RequestListener->onCoreRequest(Object(Symfony\Component\HttpKernel
\Event\GetResponseEvent)) #7 /var/www/inspiring/trunk/Symfony/vendor/
symfony/src/Symfony/Bundle/FrameworkBundle/Debug/
TraceableEventDispatcher.php(49): Symfony\Component\EventDispatcher
\EventDispatcher->triggerListener(Object(Symfony\Bundle\FrameworkBundle
\RequestListener), 'onCoreRequest', Object(Symfony\Component\HttpKernel
\Event\GetResponseEvent)) #8 /var/www/inspiring/trunk/Symfony/app/
cache/dev/classes-53824.php(1146): Symfony\Bundle\FrameworkBundle\Debug
\TraceableEventDispatcher->triggerListener(Object(Symfony\Bundle
\FrameworkBundle\RequestListener), 'onCoreRequest', Object(Symfony
\Component\HttpKernel\Event\GetResponseEvent)) #9 /var/www/inspiring/
trunk/Symfony/app/cache/dev/classes-53824.php(1734): Symfony\Component
\EventDispatcher\EventDispatcher->dispatch('onCoreRequest',
Object(Symfony\Component\HttpKernel\Event\GetResponseEvent)) #10 /var/
www/inspiring/trunk/Symfony/app/bootstrap.php.cache(411): Symfony
\Bundle\FrameworkBundle\ContainerAwareEventDispatcher-
>dispatch('onCoreRequest', Object(Symfony\Component\HttpKernel\Event
\GetResponseEvent)) #11 /var/www/inspiring/trunk/Symfony/app/
bootstrap.php.cache(400): Symfony\Component\HttpKernel\HttpKernel-
>handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1) #12/
var/www/inspiring/trunk/Symfony/vendor/symfony/src/Symfony/Bundle/
FrameworkBundle/HttpKernel.php(35): Symfony\Component\HttpKernel
\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request),
1, true) #13 /var/www/inspiring/trunk/Symfony/app/
bootstrap.php.cache(576): Symfony\Bundle\FrameworkBundle\HttpKernel-
>handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#14 /var/www/inspiring/trunk/Symfony/web/app_dev.php(15): Symfony
\Component\HttpKernel\Kernel->handle(Object(Symfony\Component
\HttpFoundation\Request)) #15 {main}
मुझे नहीं पता कि समस्या कहां हो सकती है।
आप पासवर्ड डेटाबेस में कैसे जमा हो जाती है? सादे पाठ? –
हां, मैं विकास करते समय सादे पाठ में संग्रहीत हूं। अब मैं उत्पादन में हूं और उन्हें लिखित किया गया है। – Sergi
साल्टिंग मेरा अगला अनुमान होगा ;-) –