Home >Backend Development >PHP Tutorial >Yii 2 中可以配置 component.user.loginUrl 匿名函数以实现动态赋值吗?

Yii 2 中可以配置 component.user.loginUrl 匿名函数以实现动态赋值吗?

WBOY
WBOYOriginal
2016-06-06 20:31:201154browse

期望写成下面这种形式

<code>'user' => [
    'loginUrl' => function () {
        return 'http://www.example.com/login'
            . '?return_url=' . Yii::$app->getRequest()->getAbsoluteUrl();
    },
]
</code>

-------------update-------------

现实需求是:

<code>有 一个 user.example.com 来提供 用户登录, 及基本信息管理; 
另有 a.example.com, a 项目需要登录时到 user 域名下登录,  登录后, 然后根据显式提供的return_url 跳转;</code>

目前是通过重写 a 项目中的 \yii\web\User::loginRequired() 方法来实现的

<code>'user' => [
    'class' => 'common\components\User'
]
</code>

---- update --

在 Yii 2 的 wiki ideas for 2.1 提到

See if it's possible to use SuperClosure to simplify serialization code / solve quirks.

或许可以解决这个问题。

回复内容:

期望写成下面这种形式

<code>'user' => [
    'loginUrl' => function () {
        return 'http://www.example.com/login'
            . '?return_url=' . Yii::$app->getRequest()->getAbsoluteUrl();
    },
]
</code>

-------------update-------------

现实需求是:

<code>有 一个 user.example.com 来提供 用户登录, 及基本信息管理; 
另有 a.example.com, a 项目需要登录时到 user 域名下登录,  登录后, 然后根据显式提供的return_url 跳转;</code>

目前是通过重写 a 项目中的 \yii\web\User::loginRequired() 方法来实现的

<code>'user' => [
    'class' => 'common\components\User'
]
</code>

---- update --

在 Yii 2 的 wiki ideas for 2.1 提到

See if it's possible to use SuperClosure to simplify serialization code / solve quirks.

或许可以解决这个问题。

看你的代码的需求是用户超时重新登录后返回当前页面,这个yii是实现的了,在踢出用户跳转到登录页面前已经把当前页面url地址存在session里了,登录成功后再controller中直接$this->goBack()就好了

目前loginUrl只支持字串和数组

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn