提交的数据
$_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的角色管理一章。建议:后台管理员和普通用户放在一块。这样才有高级程序员的范!