登录后,Zfc-rbac重定向到引荐来源

时间:2015-03-20 04:15:40

标签: php zend-framework2 zfc-rbac

登录后我有没有办法重定向到引荐网址?

我的配置中有这个:

'redirect_strategy' => [
    'redirect_when_connected'        => false,
    'redirect_to_route_connected'    => 'home',
    'redirect_to_route_disconnected' => 'login',
    'append_previous_uri'            => true,
    'previous_uri_query_key'         => 'redirectTo'
],

当用户转到他们没有权限的页面时,仅附加previous_uri_query_key。一个例子是某人正在浏览然后登录,但是想继续浏览他们离开的地方。

我尝试在登录操作上使用$_SERVER['HTTP_REFERER'],但是我正在运行该操作来加载页面,然后一旦他们发布了他们的凭据就会将其记录下来。这样做,服务器现在认为是引用者是登录页面,只是带你回到那里。

可能有一个简单的解决方案,我目前还没有看到它。

******************杰里-钻机******************

所以这就是我最终暂时使用的内容。我不打算将此作为答案,因为我想要一个更好的解决方案。如果我有时间回去解决这个问题,我会发布我的解决方案。但就目前而言,我正在使用它。

if (null === $this->params()->fromQuery('redirect') && $this->shouldAddRedirect($request->isPost()) &&  !$request->isPost()) {
    return $this->redirect()->toUrl('sign-up?redirect=' . $_SERVER['HTTP_REFERER']);
}

我称之为shouldAddRedirect的功能如下所示

private $no_redirect = array(
    '/login',
    '/sign-up'
);

protected function shouldAddRedirect($isPost) {
    if (isset($_SERVER['HTTP_REFERER'])){
        $referer_url = parse_url($_SERVER['HTTP_REFERER']);
        if (isset($referer_url['query']) && count($referer_url['query'])) {
            return false;
        }
        if (isset($referer_url['path']) && in_array($referer_url['path'], $this->no_redirect)) {
            return false;
        }
    } else if ($isPost) {
        return false;
    }

    return true;
}

0 个答案:

没有答案