20

Zend_Auth のセッション バックエンドを変更しようとしています。しかし、それを成功させることはできませんでした。私のbootstrap.phpで;

    $oBackend = new Zend_Cache_Backend_Libmemcached(
        array(
            'servers' => $servers,
            'compression' => false
    ) );

    // configure caching frontend strategy
    $oFrontend = new Zend_Cache_Core(
        array(
            'caching' => true,
            'automatic_serialization' => true
        ) );

    // build a caching object
    $cache = Zend_Cache::factory( $oFrontend, $oBackend );

    $saveHandler = new \Application\Auth\Adapter\Memcached();
    $saveHandler->setCacher($cache);

    \Zend_Session::setSaveHandler($saveHandler);

Memcache の値を問題なく正常に保存していました。私はそれをテストします。

    $namespace = new Zend_Session_Namespace();
    $namespace->name = "Fatih";

他のコントローラでは;

    $ns = new Zend_Session_Namespace();
    var_dump($ns->name);

大丈夫ですが、Memcache に Zend_Auth の値が表示されませんでした。しかし、私var_dump($_SESSION) がそれを次のように見ることができれば;

["Zend_Auth"]=> array(1) { ["storage"]=> object(Application_Security_Auth_Storage)#66 (1) { ["_user":protected]=> object(Application_Security_Auth_User)#84 (4) { ["id":protected]=> object(MongoId)#87 (1) { ["$id"]=> string(24) "4fcca6b8c863c79d33000004" } ["username":protected]=> string(5) "admin" ["role":protected]=> string(5) "admin" ["fullname":protected]=> NULL } } }

ここで私のログイン方法を見ることができます;

public function login($username, $password)
{
    if ($username == "" || $password == "")
        return false;

    $adapter = new \Application_Security_Auth_Adapter();

    $adapter->setIdentity($username);
    $adapter->setCredential($password);

    $auth = \Zend_Auth::getInstance();
    $result = $auth->authenticate($adapter);

    return $result->isValid();
}
4

2 に答える 2

1

私はそれが最も簡単な方法だと思います、そしてそれはあなたのためにうまくいくでしょう

親愛なるユーザー このクラスを Zend Framework For Session に使用してください。

Zend\Session\Container を使用します。

次に、Seesions から値を取得するために以下の手順を実行します。

    $user_session = new Container('user_login');
    $loginUser = $user_session->login_user['user_type'];

$user_session->login_user この変数に、ユーザー タイプ、ユーザーの電子メール、ユーザー ID などのユーザー関連情報のすべての配列を格納します...次に、各ページでこのセッション値を取得します...

于 2015-01-15T12:59:48.950 に答える
1

これが役立つかどうかはわかりませんが、Zend_auth は、どこからでもアクセスできるストレージを自動的に作成します。

$session = new Zend_Session_Namespace('Zend_Auth');
$session->storage->//here goes your property like user id password etc

Zend_Auth を使用すると、Zend_Auth_Storage_Session のデフォルト値である "Zend_Auth" が Zend_Session_Namespace として使用されます。使用する名前空間を変更するには、 Zend_Auth_Storage_Session のデフォルト値を変更します。それ以外の場合は、この情報をキャッシュしたり、他の場所に保存したりしたい場合は、すべて手動で行います。いつでもアクセスして、必要な場所に移動できます。

今、私が助けてくれることを願っていましたが、memcacheについて何も知りません

于 2014-09-16T20:23:20.490 に答える