在Yii2中回调后如何获取用户身份

c3frrgcw  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(162)

在我的控制器我有这个下面的行为功能:

public function behaviors()
{
    return [
        'verbs' => [
            'class' => \yii\filters\VerbFilter::className(),
            'actions' => [
                'verifym'  => ['OPTIONS','POST','GET']
            ]
        ],
        'access' => [
            'class' => \yii\filters\AccessControl::className(),
            'rules' => [
                [
                    'allow' => true,
                    'actions' => [
                        'index', 'payment', 'result', 'verify',
                        'paymentvalidation'
                    ],
                    'roles' => [ 'user' ]
                ],
                [
                    'allow' => true,
                    'actions' => ['verifym'],
                    'roles' => ['*']
                ]
            ],
            'denyCallback' => function ($rule, $action) {
                $this->redirect([ '/' ]);
                return null;
            }
        ]
    ];
}

当从外部引用站点调用verifym操作时,它不会触发,而会触发denyCallBack。并且用户标识为空。
为什么denyCallBack是fire?为此,需要对我的访问规则进行哪些更改?
为什么用户标识为空?如何在回调过程中访问它?
为什么从其他不同域回调后,用户标识和会话为空,刷新后取值?
有人能帮我吗?

8wigbo56

8wigbo561#

如果要为所有用户触发,则必须按如下方式设置(针对所有已验证的用户):

[
                'allow' => true,
                'actions' => ['verifym'],
                'roles' => ['@']
            ]

您可以查看文档和示例-https://www.yiiframework.com/doc/api/2.0/yii-filters-accesscontrol

nafvub8i

nafvub8i2#

从其他特定的域回调我的url后,它似乎在请求中阻塞了它们的头,Yii框架标识通过从请求的头中阅读一些头来检查它们。所以我在请求和响应之间通过send和get来配置它。

相关问题