yii2 如何处理管理员登陆
$_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,结构。
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,结构。
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,
],
- 修改LoginForm getUser() 从您的用户表获取用户.
试了一下2.0, 把models/User.php
修改成下边这样.
$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的角色管理一章。建议:后台管理员和普通用户放在一块。这样才有高级程序员的范!
上一篇: Smarty最简单实现列表奇偶变色的方法_php实例
下一篇: php中正则匹配用户密码