我在Yii2中有这个代码,我定义了用户(在models / Users.php中):
<?php
namespace app\models;
class User extends \yii\base\Object implements \yii\web\IdentityInterface
{
public $id;
public $username;
public $password;
public $authKey;
public $accessToken;
private static $users = [
'100' => [
'id' => '100',
'username' => 'admin',
'password' => 'my_password',
'authKey' => 'my_authkey',
'accessToken' => 'my_accessyoken',
这是我在SiteController.php中的代码:
<?php
namespace app\controllers;
use Yii;
use yii\filters\AccessControl;
use yii\web\Controller;
use yii\filters\VerbFilter;
use app\models\LoginForm;
use app\models\ContactForm;
class SiteController extends Controller
{
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'only' => ['logout'],
'rules' => [
[
'actions' => ['logout'],
'allow' => true,
'roles' => ['@'],
],
],
],
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'logout' => ['post'],
],
],
];
}
问题是:
1)现在,访问者可以查看我网站中的任何页面而无需登录。哪种方法是强制用户登录以查看任何页面的最简单方法?
2)我怎样才能让特定用户查看某些私人页面?
我已经尝试了一些没有运气的选择......
谢谢!
答案 0 :(得分:0)
好吧,您阻止任何未登录的人访问您的注销页面。但是,您不会阻止访客访问控制器中的任何其他页面。您可以执行此操作:https://github.com/yiisoft/yii2-app-advanced/blob/master/frontend/controllers/SiteController.php
了解他们如何定义只有登录的人才有权注销,只有访客才能注册。
关于第二部分,只允许某些登录客户访问某些部分,您始终可以创建自己的过滤器: http://www.yiiframework.com/doc-2.0/guide-structure-filters.html 或者你可以尝试在控制器动作之前覆盖。