如果用户未登录,则重定向登录页面的方法

时间:2016-02-07 20:22:32

标签: redirect yii2 logged

如果用户未登录页面,我想将用户重定向到登录页面。但我在我的

中有actionLogin
  

这个RegistrationController

所以当我在我的common / main中使用时:

'as beforeRequest' => [  //if guest user access site so, redirect to login page.
    'class' => 'yii\filters\AccessControl',
    'rules' => [
        [
            'actions' => ['login', 'error'],
            'allow' => true,
        ],
        [
            'allow' => true,
            'roles' => ['@'],
        ],
    ],
],

它总是将我重定向到

  

的index.php?R =站点%2Flogin

可以将主登录重定向更改为

  

的index.php?R =登记%2Flogin

如果有可能我应该覆盖代码或改变某些东西.. !编辑! 好了,

  

'user'=> ['loginUrl'=> ['registration / login'],],

解决问题,但当我想注册/索引注册用户时,它会将我重定向到注册/登录。可以排除强制执行此URL。我想做:

  

的index.php?R =注册

唯一可用的路径

这是我的facebook登录我想要启用它

public function oAuthSuccess($client) {
        // get user data from client
        $userAttributes = $client->getUserAttributes();

        $user = User::find()->where(['Email' => $userAttributes['email']])->one();

        if (!$user) {
            $newuser = New SignupForm();
            $newuser->oAuthSuccess($client);
            $user = User::find()->where(['Email' => $userAttributes['email']])->one();
            if ($newuser->validate() && Yii::$app->getUser()->login($user)) {
                Yii::$app->session->setFlash('success', Yii::t('app', 'Udało się poprawnie zalogować. Prosimy dokonać zmian w ustawianiach profilu.'));
                return $this->redirect('index.php?r=content/news');
                }
        }

        Yii::$app->user->login($user);
    }

1 个答案:

答案 0 :(得分:0)

app/config/web.php(基本模板)或 app/frontend/config/main.php(提前模板) - reference

return [
    // ...
    'components' => [            
        // ...
        'user' => [
            'identityClass' => 'common\models\UserIdentity',
            'enableAutoLogin' => true,
            'loginUrl'=>['registration/login']
        ],

        // ...

并在您的控制器中为例如RegistrationController.php

// ...
class RegistrationController extends Controller
{    
    public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControl::className(),                
                'rules' => [
                    [
                        'actions' => ['login', 'signup'], // those action only which guest (?) user can access
                        'allow' => true,
                        'roles' => ['?'],                        
                    ],
                    [
                        'actions' => ['home', 'update'],  // those action only which authorized (@) user can access
                        'allow' => true,
                        'roles' => ['@'],
                    ],
                ],
            ],
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'logout' => ['post'],
                ],
            ],
        ];
    }

    // ...