dsxjot8620 2015-12-21 10:23
浏览 69

Zend \ ServiceManager \ ServiceManager :: get无法为AuthService获取或创建实例

I Logging into a login page and always getting this error. I have used Zend Authentication in my code . Here is my controller for login page :

    <?php
    namespace Webin\Controller;

    use Zend\Session\Container;
    use Zend\View\Model\ViewModel;
    use Webin\Controller\AppController;
    use Webin\Form\LoginForm;
    use Webin\Form\Filter\LoginFilter;
    use Webin\Utility\UserPassword;

    class LoginController extends AppController {

        protected $storage;
        protected $authservice;
        var $title="abc | ";
        public function indexAction(){       

            $request = $this->getRequest();

            $view = new ViewModel();
            $view->title = $this->title."Login";
            $loginForm = new LoginForm('loginForm');       
            $loginForm->setInputFilter(new LoginFilter() );

            if($request->isPost()){
                $data = $request->getPost();
                $loginForm->setData($data);

                if($loginForm->isValid()){              
                    $data = $loginForm->getData();        

                    $userPassword = new UserPassword('md5');
                    $encyptPass = $userPassword->create($data['password']);
                    $this->getAuthService()
                    ->getAdapter()
                    ->setIdentity($data['email'])
                    ->setCredential($encyptPass);
                    $result = $this->getAuthService()->authenticate();

                    if ($result->isValid()) 
                    {

                        $session = new Container('User');
                        $session->offsetSet('email', $data['email']);

                        $this->flashMessenger()->addMessage(array('success' => 'Login Success.'));
                        // Redirect to page after successful login
                    }
                    else
                    {
                        $this->flashMessenger()->addMessage(array('error' => 'invalid credentials.'));
                        // Redirect to page after login failure
                    }
                    return $this->redirect()->tourl('/home');
                    // Logic for login authentication                
                }
                else
                {
                    $errors = $loginForm->getMessages();
                    //prx($errors);  
                }
            } 

            $view->setVariable('loginForm', $loginForm);
            return $view;
            //return $this->redirect()->toUrl('http://www.webmobi.com/auth/signin')->setStatusCode(301);
        }

        private function getAuthService()
        {
            if (! $this->authservice) {
                $this->authservice = $this->getServiceLocator()->get('AuthService');
                //$this->authservice = $this->getServiceLocator()->get('Zend\Authentication\Adapter\AbstractAdapter');
                //$db_array = $config['db'];
            }
            return $this->authservice;
        }
                    public function logoutAction()
                    {
                      $session = new Container('User');
                      $session->getManager()->destroy();
                      $this->getAuthService()->clearIdentity();
                      return $this->redirect()->toUrl('/home'); 
                    }
    }
?>         

My global.php looks like this :

    return array(
'db' => array(
    'driver'         => 'Pdo',
    'dsn'            => 'mysql:dbname=webmobi;host=localhost',
    'driver_options' => array(
        'PDO::MYSQL_ATTR_INIT_COMMAND' => 'SET NAMES \'UTF8\''
    ),
),
'service_manager' => array(
    'factories' => array(
        'Zend\Db\Adapter\Adapter'
                => 'Zend\Db\Adapter\AdapterServiceFactory',
        // 'Zend\Authentication\Adapter\AbstractAdapter'
        //         => 'Zend\Authentication\AuthenticationServiceInterface',
    ),
),

);

Furthermore I followed similar questions but unable to remove that error.

I have tried these questions on stack overflow which look similar but they didnt helped.:

zf2 navigation - 'Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for navigation'

please help me Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for Zend\Db\Adapter\Adapter

Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for db

I am newbie in ZF2 . Please Help?

  • 写回答

1条回答 默认 最新

  • dql123000 2015-12-21 11:19
    关注

    It looks like that the configuration key to retrieve the authentication service is 'Zend\Authentication\AuthenticationService' and not 'AuthService'. Try to use

    $this->authservice = $this->getServiceLocator()->get('Zend\Authentication\AuthenticationService');
    
    评论

报告相同问题?

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值