如果用户未登录页面,我想将用户重定向到登录页面。但我在我的
中有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);
}
答案 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'],
],
],
];
}
// ...