实际上,我使用的是yii2基本模板,其中构建了不同的控制器,模型和视图,还开发了登录系统 但是我想何时首先路由到任何操作控制器,但必须确保用户是否登录(如果用户登录),那么他(她)必须提供访问权限,否则应提示用户进入登录页面。
我已经与一些高年级学生进行了交流,但是我无法说服我也要对像StackOverflow这样的不同平台进行一些研究,但是仍然处于停滞状态。
答案 0 :(得分:1)
据我所知,您可以找到一个简单的方法来解决这个问题:
if (Yii::$app->user->isGuest)
您还可以使用behaviors
使用AccessControl
函数,如下所示:
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::class,
'rules' => [
[
'allow' => true,
'roles' => ['@'],
],
],
],
];
}
您可以详细了解here。您还需要其他东西吗?据我所知,其中之一应该可以为您提供帮助,但是如果您需要一些特别的东西,请告诉我。
答案 1 :(得分:0)
在操纵杆中,放置行为功能如下:
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,
]);
}
答案 2 :(得分:0)
您可以通过在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,
];
如果该用户未登录,则该用户将被重定向到站点控制器的登录操作。