php - instalar - Acceso a Yii Framework 2.0 con base de datos de usuario
yii2 install (2)
He intentado buscar en Internet cómo escribir el código en Yii framework 2.0 para que el usuario pueda iniciar sesión con las credenciales almacenadas en la base de datos y no desde la matriz, con el prefijo en modelos / User.php. Sé cómo hacer eso en Yii 1. Pero en Yii 2.0, realmente no sé cómo hacer eso. Como todavía no se ha lanzado Yii 2.0 (solo está disponible la versión beta), no pude encontrar muchos tutoriales de Yii 2.0 en Internet sobre el inicio de sesión con la base de datos.
Verifique la aplicación avanzada Yii2:
https://github.com/yiisoft/yii2-app-advanced
Hay implementación completa de registro, inicio de sesión, restablecer contraseña para usuarios almacenados en DB.
Puede implementar la administración de usuarios de la base de datos usando extesions como https://github.com/amnah/yii2-user .
O
Si desea escribir su propia secuencia de comandos personalizada para administrar a los usuarios, puede anular Yii2 identityClass.
En la sección de componentes de tu configuración agrega:
''user'' => [
''identityClass'' => ''app/models/User'',
''enableAutoLogin'' => true,
],
Tenga en cuenta que su modelo de usuario DEBE IMPLEMENTAR / yii / web / IdentityInterface
Este es el ejemplo de la clase de modelo que puede usar para implementar la autenticación de la base de datos
namespace app/models;
//app/models/gii/Users is the model generated using Gii from users table
use app/models/gii/Users as DbUser;
class User extends /yii/base/Object implements /yii/web/IdentityInterface {
public $id;
public $username;
public $password;
public $authKey;
public $accessToken;
public $email;
public $phone_number;
public $user_type;
/**
* @inheritdoc
*/
public static function findIdentity($id) {
$dbUser = DbUser::find()
->where([
"id" => $id
])
->one();
if (!count($dbUser)) {
return null;
}
return new static($dbUser);
}
/**
* @inheritdoc
*/
public static function findIdentityByAccessToken($token, $userType = null) {
$dbUser = DbUser::find()
->where(["accessToken" => $token])
->one();
if (!count($dbUser)) {
return null;
}
return new static($dbUser);
}
/**
* Finds user by username
*
* @param string $username
* @return static|null
*/
public static function findByUsername($username) {
$dbUser = DbUser::find()
->where([
"username" => $username
])
->one();
if (!count($dbUser)) {
return null;
}
return new static($dbUser);
}
/**
* @inheritdoc
*/
public function getId() {
return $this->id;
}
/**
* @inheritdoc
*/
public function getAuthKey() {
return $this->authKey;
}
/**
* @inheritdoc
*/
public function validateAuthKey($authKey) {
return $this->authKey === $authKey;
}
/**
* Validates password
*
* @param string $password password to validate
* @return boolean if password provided is valid for current user
*/
public function validatePassword($password) {
return $this->password === $password;
}
}
Espero que sea útil para ti. Saludos :)