Php 如何让用户登录在yii2中完美工作
事实上,我在YiI2Basic模板中工作过,在这里我构建了不同的控制器、模型和视图,还开发了一个登录系统 但我想在何时首先路由到任何操作控制器,它必须确保用户是否登录如果用户登录,那么他或她必须提供访问权限,否则应提示用户登录页面Php 如何让用户登录在yii2中完美工作,php,authentication,yii2,Php,Authentication,Yii2,事实上,我在YiI2Basic模板中工作过,在这里我构建了不同的控制器、模型和视图,还开发了一个登录系统 但我想在何时首先路由到任何操作控制器,它必须确保用户是否登录如果用户登录,那么他或她必须提供访问权限,否则应提示用户登录页面 我已经与一些高年级学生进行了沟通,但我无法说服我的大脑也对不同的平台(如StackOverflow)进行了一些研究,但仍处于停顿状态。据我所知,您正在寻找什么,像这样一个简单的事情应该可以解决问题: if (Yii::$app->user->isGuest
我已经与一些高年级学生进行了沟通,但我无法说服我的大脑也对不同的平台(如StackOverflow)进行了一些研究,但仍处于停顿状态。据我所知,您正在寻找什么,像这样一个简单的事情应该可以解决问题:
if (Yii::$app->user->isGuest)
您还可以使用AccessControl的behaviors函数执行此操作,如下所示:
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::class,
'rules' => [
[
'allow' => true,
'roles' => ['@'],
],
],
],
];
}
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'rules' => [
[
'allow' => true,
'roles' => ['@'],
],
],
],
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'logout' => ['post'],
],
],
];
}
public function actionLogin()
{
if (!Yii::$app->user->isGuest) {
return $this->goHome();
}
$model = new LoginForm();
if ($model->load(Yii::$app->request->post()) && $model->login()) {
return $this->goBack();
}
$model->password = '';
return $this->render('login', [
'model' => $model,
]);
}
你可以阅读更多关于它的内容。你还需要什么吗?据我所知,其中一个应该能够帮助您,但是如果您需要什么特殊的东西,请告诉我。在controller-put-behaviors函数中,如下所示:
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::class,
'rules' => [
[
'allow' => true,
'roles' => ['@'],
],
],
],
];
}
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'rules' => [
[
'allow' => true,
'roles' => ['@'],
],
],
],
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'logout' => ['post'],
],
],
];
}
public function actionLogin()
{
if (!Yii::$app->user->isGuest) {
return $this->goHome();
}
$model = new LoginForm();
if ($model->load(Yii::$app->request->post()) && $model->login()) {
return $this->goBack();
}
$model->password = '';
return $this->render('login', [
'model' => $model,
]);
}
登录函数如下所示:
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::class,
'rules' => [
[
'allow' => true,
'roles' => ['@'],
],
],
],
];
}
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'rules' => [
[
'allow' => true,
'roles' => ['@'],
],
],
],
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'logout' => ['post'],
],
],
];
}
public function actionLogin()
{
if (!Yii::$app->user->isGuest) {
return $this->goHome();
}
$model = new LoginForm();
if ($model->load(Yii::$app->request->post()) && $model->login()) {
return $this->goBack();
}
$model->password = '';
return $this->render('login', [
'model' => $model,
]);
}
通过在config/web.php文件中使用'as beforeRequest'配置,您可以在全局级别实现这一点,下面是示例:
$config = [
'id' => 'basic',
...
'components' => [
...
],
'as beforeRequest' => [
'class' => 'yii\filters\AccessControl',
'rules' => [
[
'allow' => true,
'actions' => ['login', 'forgot', 'verify', ],
],
[
'allow' => true,
'roles' => ['@'],
],
],
'denyCallback' => function () {
return Yii::$app->response->redirect(['site/login']);
},
],
'params' => $params,
];
如果用户未登录,则用户将被重定向到站点控制器,登录操作 你在找这样的东西吗?读这个