在我的控制器我有这个下面的行为功能:
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?为此,需要对我的访问规则进行哪些更改?
为什么用户标识为空?如何在回调过程中访问它?
为什么从其他不同域回调后,用户标识和会话为空,刷新后取值?
有人能帮我吗?
2条答案
按热度按时间8wigbo561#
如果要为所有用户触发,则必须按如下方式设置(针对所有已验证的用户):
您可以查看文档和示例-https://www.yiiframework.com/doc/api/2.0/yii-filters-accesscontrol
nafvub8i2#
从其他特定的域回调我的url后,它似乎在请求中阻塞了它们的头,Yii框架标识通过从请求的头中阅读一些头来检查它们。所以我在请求和响应之间通过send和get来配置它。