1

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

注册控制器

所以当我在我的 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=site%2Flogin

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

index.php?r=registration%2Flogin

如果可能的话,我应该在哪里覆盖代码或更改某些内容..!编辑!好的,

'用户' => ['loginUrl' => ['注册/登录'], ],

解决问题,但是当我想去注册/索引注册用户时,它会将我重定向到注册/登录。可以从强制执行中排除此 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);
    }
4

1 回答 1

0

在您的app/config/web.php(对于基本模板)或 app/frontend/config/main.php(对于高级模板) -参考

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'],
                ],
            ],
        ];
    }

    // ...
于 2016-02-08T06:20:58.350 回答