提交的数据
$_GET = [
'r' => 'site/login',
];
$_POST = [
'_csrf' => 'WjgxM0tfa3YxQn1rcg4vHioLVlt.EjhOAnFVR3MuXgQ7WkNmBwofIg==',
'LoginForm' => [
'username' => 'admin',
'password' => 'admin',
'rememberMe' => '1',
],
'login-button' => '',
];
yii2 处理管理员登陆部分的代码:
#/var/www/example.com/public_html/yii/backend/controllers/SiteController.php
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();
} else {
return $this->render('login', [
'model' => $model,
]);
}
}
但是我并没有user表,这里是backend,管理员登陆部分,对应的表是admin,结构。
1.后台管理登陆直接在网站地址后输入后台路径,默认为 /admin,进入后台管理登陆页面,输入管理员用户名和密码,默认为 中文 admin ,登陆后台。2.后台管理a.注销管理登陆 (离开后台管理时,请点击这里正常退出,确保系统安全)b.查看使用帮助 (如果你在使用系统时,有不清楚的,可以到这里来查看)c.管理员管理 (这里可以添加,修改,删除系统管理员,暂不支持,分权限管理操作)d.分类管理 (
0
<br>mysql> desc admin; +-------+------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+------------------+------+-----+---------+-------+ | id | int(10) unsigned | NO | | NULL | | | name | char(30) | NO | | | | | pwd | char(32) | NO | | | | | email | char(30) | NO | | | | +-------+------------------+------+-----+---------+-------+ 4 rows in set (0.03 sec) mysql> select * from admin; +----+---------+----------------------------------+-------+ | id | name | pwd | email | +----+---------+----------------------------------+-------+ | 1 | admin | b9840270f7f4ed699ccc93cc09914d21 | | +----+---------+----------------------------------+-------+ 1 row in set (0.00 sec)
yii2 他默认的都是user表,可我并没有user表。
我现在提交了用户名和密码,该如何修改actionLogin里面的代码才最合适。
提交的数据
$_GET = [
'r' => 'site/login',
];
$_POST = [
'_csrf' => 'WjgxM0tfa3YxQn1rcg4vHioLVlt.EjhOAnFVR3MuXgQ7WkNmBwofIg==',
'LoginForm' => [
'username' => 'admin',
'password' => 'admin',
'rememberMe' => '1',
],
'login-button' => '',
];
yii2 处理管理员登陆部分的代码:
#/var/www/example.com/public_html/yii/backend/controllers/SiteController.php
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();
} else {
return $this->render('login', [
'model' => $model,
]);
}
}
但是我并没有user表,这里是backend,管理员登陆部分,对应的表是admin,结构。
<br>mysql> desc admin; +-------+------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+------------------+------+-----+---------+-------+ | id | int(10) unsigned | NO | | NULL | | | name | char(30) | NO | | | | | pwd | char(32) | NO | | | | | email | char(30) | NO | | | | +-------+------------------+------+-----+---------+-------+ 4 rows in set (0.03 sec) mysql> select * from admin; +----+---------+----------------------------------+-------+ | id | name | pwd | email | +----+---------+----------------------------------+-------+ | 1 | admin | b9840270f7f4ed699ccc93cc09914d21 | | +----+---------+----------------------------------+-------+ 1 row in set (0.00 sec)
yii2 他默认的都是user表,可我并没有user表。
我现在提交了用户名和密码,该如何修改actionLogin里面的代码才最合适。
1 参考高级模板里里的common\models\User 修改 Admin, 并改成目前的密码加密方式.
2 修改 配置文件里的
'user' => [
// 'identityClass' => 'common\models\User',
'identityClass' => 'common\models\Admin',
'enableAutoLogin' => true,
],
试了一下2.0, 把models/User.php修改成下边这样.
<?php
namespace app\models;
//继承关系修改为如下
class User extends \yii\db\ActiveRecord implements \yii\web\IdentityInterface
{
public $id;
//username字段修改为name
public $name;
//password字段修改为pwd
public $pwd;
public $authKey;
public $accessToken;
public static function tableName()
{
//数据库表名修改user为admin
return '{{admin}}';
}
public static function findIdentity($id)
{
return static::findOne($id);
}
public static function findIdentityByAccessToken($token)
{
return static::findOne(['access_token' => $token]);
}
public static function findByUsername($username)
{
//username修改为name
return static::findOne(['name' => $username]);
}
public function getId()
{
return $this->id;
}
public function getAuthKey()
{
return $this->authKey;
}
public function validateAuthKey($authKey)
{
return $this->authKey === $authKey;
}
public function validatePassword($password)
{
//password修改为pwd
return $this->pwd === $password;
}
}
你应该增加一个UserIdentity 并且修改LoginForm 两者结合才可以不用父类的User表
很简单,添加权限管理,快捷方便。你可以去看官方文档中的rbac的角色管理一章。建议:后台管理员和普通用户放在一块。这样才有高级程序员的范!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号