0

これが私のカスタムセキュリティリスナーです(sym 2.0から)

namespace mine\UserBundle\EventListener;

use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
use Symfony\Component\Security\Core\SecurityContext;
use Symfony\Component\HttpFoundation\Session as Session;


class SecurityListener
{
    protected $security;
    protected $session;

/**
* Constructs a new instance of SecurityListener.
*
* @param SecurityContext $security The security context
* @param Session $session The session
*/
    public function __construct(SecurityContext $security, Session $session)//<-- here
    {
        //You can bring whatever you need here, but for a start this should be useful to you
        $this->security = $security;
        $this->session = $session;
    }

/**
* Invoked after a successful login.
*
* @param InteractiveLoginEvent $event The event
*/
    public function onSecurityInteractiveLogin(InteractiveLoginEvent $event)
    {
         //Your logic needs to go here
         //You can addRole 
         //Even persist if you want but bring the right tools to your constructor
         $security = $this->security; 

         if ($security->getToken()->getUser()->hasPlus()) {       
            $security->getToken()->getUser()->addRole('ROLE_PLUSUSER');    
         }

    }
}

このエラーがスローされるため、2.0 と 2.1 の間でいくつかの名前空間などが変更されたと想定しています (現時点では 2.3 まで持ち上げようとしています)。

ContextErrorException: キャッチ可能な致命的なエラー: mine\UserBundle\EventListener\SecurityListener::__construct() に渡される引数 2 は、Symfony\Component\HttpFoundation\Session のインスタンスである必要があります。指定された Symfony\Component\HttpFoundation\Session\Session のインスタンスである必要があります

4

1 に答える 1

1

わかりました。依存関係を次のように変更します

Symfony\Component\HttpFoundation\Session\Session を使用します。

トリックをしました。エラーメッセージが言っていることとはまったく反対のようでした...

于 2014-12-05T21:32:01.327 に答える