0

Zend Framework 2 の初心者です。

「Admin」モジュールを作成し、「UserController」と「AlbumController」も作成しました。UserController には、ログインとログアウトのアクションが含まれています。AlbumController には、通常の CRUD とウェルカム アクションが含まれています。

http://localhost/websites/zendtest/public/admin/loginさて、すでにログインしているときに直接アクセスすると、ウェルカムページでページをリダイレクトするにはどうすればよいですか。

http://localhost/websites/zendtest/public/admin/album/welcomeそして、同じ質問は、まだログインしていないときに直接アクセスしたときに、ログインページでページをリダイレクトするにはどうすればよいですか。

誰でもその解決策を提案できますか?

メニューを作成するための MenuContoller があるため、layout.phtml でコントローラーのアクション値を使用するにはどうすればよいかという別の質問もあります。したがって、動的メニューを作成するには、layout.phtml の MenuController から配列を返す必要があります。

それで、どうすればそれを行うことができますか?

4

2 に答える 2

0

ユーザーをどのように認証しているかはわかりませんが、を使用している場合はZend\Auth、次のようなことができます。

public function loginAction() {
    $authService = new \Zend\Authentication\AuthenticationService();
    $authService->setStorage(new \Zend\Authentication\Storage\Session('user', 'details'));

    if ($authService->hasIdentity()) {
        // User is already logged in; redirect to welcome page
        return $this->redirect()->toRoute('welcome'); // Assumes that you have a 'welcome' route
    }
}

そしてウェルカムアクションのために:

public function welcomeAction() {
    $authService = new \Zend\Authentication\AuthenticationService();
    $authService->setStorage(new \Zend\Authentication\Storage\Session('user', 'details'));

    if (!$authService->hasIdentity()) {
        // User is not logged in; redirect to login page
        return $this->redirect()->toRoute('login'); // Assumes that you have a 'login' route
    }
}

上記は、多くのページで実行したい場合は非常に繰り返しになる可能性があるため、サービスマネージャ(ファクトリ)から認証サービスを取得するなどして、再利用可能にすることを検討する必要があります。

于 2013-03-14T17:14:30.710 に答える
0

ZF2 docで説明されていないと思います。redirect再開するには、プラグインを使用してセッションをテストし、リダイレクトする必要があります。

$this->redirect()->toRoute('actionname');

リダイレクトプラグインは次のように使用されます。

->toRoute($route, array $params = array(), array $options = array());

$params提供された URLを使用して名前付きルートにリダイレクトし$options、URL を組み立てます。

acl古い ZFのプラグインのようなユーザーを認証するには、このページにアクセスしてください

最後の質問では、( ZF2.1.3の場合) を使用してビューに値を渡すことができます。

$layout = $this->layout();
$layout->myvar = $mymenuarray;

そして、ビューでそれを取得します

$myvar...
于 2013-03-13T10:02:05.440 に答える