未设置Phalcon Rest Micro会话

时间:2015-05-04 20:06:33

标签: php api rest session phalcon

我试图使用Phalcon制作休息应用程序,我保存了一些信息 在会话中登录的用户,但我不能让它工作,我的代码:

    $this->session->set(  Sessions::USERINFO, array (
            'login'    => true,
            'type'     => UserTypes::ADMIN,
            'username' => $this->user->getUsername(),
            'adminid'  => $this->user->getAdminID(),
            'fullname' => $this->user->getFullName(),
            'avatar'   => $this->user->getAvatar() )
    );

    return $this->session->get(  Sessions::USERINFO );

当他返回会话时,它可以工作,但当我尝试在其他请求中获取会话时,它返回空

    return array("session" => $this->session->isStarted(),
                 "session Data" => $this->session->get(Sessions::USERINFO));

isStarted返回true get return null

Sessions::USERINFO

是一个具有const值的类

const USERINFO = "userInfo";

会话var创建

  $di->setShared( 'session', function () {
    $session = new Session();
    $session->start();

    return $session;
  } );

2 个答案:

答案 0 :(得分:0)

我用它来保存我的会话:

    $obj = $this->request->getJsonRawBody();

    $user = Users::findFirstByUsername($obj->username);

    if($user) {
        if($this->security->checkHash($obj->password, $user->password)) {
            unset($user->password);

            $this->session->set('auth', $user->toArray());
            $response = $user->toArray();
        }
        else {
            $response = array('msg' => 'failed');
        }
    }
    else {
        $response = array('error' => 'User not found');
    }

    $this->setPayload($response);

    return $this->render();

这是为了从我的会话中收到信息

    if($this->session->get('auth')['username']) {
        $response = $this->session->get('auth');
    }
    else {
        $response = array('msg' => 'noInfo');
    }

    $this->setPayload($response);

    return $this->render();

这就是我开始会话的方式:

$di->set('session', function () {
    $session = new SessionAdapter();
    $session->start();

    return $session;
});

它工作得很好,你可能想试试这个。

答案 1 :(得分:0)

我发现了问题。不得不在我的frondend应用程序中启用它:

    RestangularProvider.setDefaultHttpFields({
        withCredentials: true
    });

前端没有按照每个请求发送cookie。