登录访问在yii2中不起作用
我在我的项目中使用yii2。我需要使用两个不同的表登录(登录页面是相同的)。我有两种型号Admin和User。我有一个登录名,来自 我可以正确登录,但问题是登录后,我无法获取管理员是否登录或用户是否登录 我在配置文件(web.php)中对其进行了如下设置:登录访问在yii2中不起作用,yii2,Yii2,我在我的项目中使用yii2。我需要使用两个不同的表登录(登录页面是相同的)。我有两种型号Admin和User。我有一个登录名,来自 我可以正确登录,但问题是登录后,我无法获取管理员是否登录或用户是否登录 我在配置文件(web.php)中对其进行了如下设置: 'admin' => [ 'identityClass' => 'app\models\Admin', 'enableAutoLogin' => false, 'class'
'admin' => [
'identityClass' => 'app\models\Admin',
'enableAutoLogin' => false,
'class' => 'yii\web\User',
'authTimeout' => 1200, // in Seconds. 1200 seconds means 20 mins
],
'user' => [
'identityClass' => 'app\models\User',
'enableAutoLogin' => false,
'authTimeout' => 1200
],
因此,我使用以下方法登录用户详细信息:
\Yii::$app->admin->identity;
\Yii::$app->user->identity;
我的问题是,如果我以管理员身份登录,我也可以通过以下方式获取用户值:\Yii::$app->user->identity或者如果我以用户身份登录,我可以使用以下命令获取管理员值:\Yii::$app->admin->identity
我的LoginForm.php是:
<?php
namespace app\models;
use Yii;
use yii\base\Model;
class LoginForm extends Model
{
public $username;
public $password;
public $rememberMe = true;
private $_user = false;
public function rules()
{
return [
// username and password are both required
[['username', 'password'], 'required'],
// rememberMe must be a boolean value
['rememberMe', 'boolean'],
// password is validated by validatePassword()
['password', 'validatePassword'],
];
}
public function validatePassword($attribute, $params)
{
if (!$this->hasErrors()) {
$user = $this->getUser();
if (!$user || !$user->validatePassword($this->password)) {
$this->addError($attribute, 'Incorrect username or password.');
}
}
}
public function login()
{
if ($this->validate()) {
if(!empty($this->getUser()['phone_number'])) {
return Yii::$app->admin->login($this->getUser(), $this->rememberMe ? 3600*24*30 : 0);
} else {
return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600*24*30 : 0);
}
}
return false;
}
public function getUser()
{
if ($this->_user === false) {
$this->_user = User::findByUsername($this->username);
if(!$this->_user) {
$this->_user = Admin::findByUsername($this->username);
}
}
return $this->_user;
}
}
通过阅读注释,我认为您应该为两个身份创建一个统一的表,这两个身份都是从中获取ID的。然后将其设为identity类。您能够在两个标识类中看到详细信息的原因是它们具有相同的ID。为什么需要两个标识?为什么不使用RBAC并定义角色管理员?我同意@Aivar这里你应该使用RBAC和定义角色,而不是创建两个单独的标识或表。我必须使用两个表,这就是@Aivar无法在yii2中使用两个表登录的原因:(问题是我不应该更改我的表结构