Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用户点击链接后显示页面yii2应用程序中无需登录_Yii2_Yii2 Advanced App - Fatal编程技术网

用户点击链接后显示页面yii2应用程序中无需登录

用户点击链接后显示页面yii2应用程序中无需登录,yii2,yii2-advanced-app,Yii2,Yii2 Advanced App,您单击管理员通过电子邮件共享的链接。单击此链接后,您应查看此页面,无需登录过程。如何做到这一点 我创建了此功能,用户可以轻松重定向到此页面,但几秒钟后,应用程序重定向并显示登录页面 public function behaviors() { return [ 'access' => [ 'class' => AccessControl::className(), 'rules'

您单击管理员通过电子邮件共享的链接。单击此链接后,您应查看此页面,无需登录过程。如何做到这一点

我创建了此功能,用户可以轻松重定向到此页面,但几秒钟后,应用程序重定向并显示登录页面

 public function behaviors() {
        return [
            'access' => [
                'class' => AccessControl::className(),
                'rules' => [
                    [
                        'actions' => ['deal'],
                        'allow' => true,
                        'roles' => ['?'],
                    ],
                ],
            ],
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'deal' => ['post'],
                ],
            ],
        ];
    }

您可以检查操作的授权

public function actionDeal() {

    if (\Yii::$app->user->isGuest && !\Yii::$app->session->has('adminshared')) {
        return $this->redirect(['site/login']);
    }

    // To do
}
并且您可以共享指向另一个操作的链接,当用户输入此操作时,您应该在会话上设置变量

public function actionSharedFromAdmin() {

    // To Do

    \Yii::$app->session->set('adminshared', true);
    return $this->redirect(['yourcontroller/deal']);

}

尝试仅添加参数
。像这样
'only'=>['deal'],
进入
访问
类定义后的行为。如果您希望仅向未经身份验证的用户显示此页面。为什么将对
deal
操作的请求限制为仅使用
VerbFilter
POST
方法?如果应该通过邮件链接访问,浏览器将发送
GET
请求。