私はYii2 Advancedバージョンを使用しています。また、私は何の問題もないと思いますLoginControllerがYii2:セッションを取得できません。
namespace common\models;
use Yii;
use yii\base\Model;
use common\models\User;
class LoginForm extends Model{
public $username;
public $password;
public $rememberMe = true;
public $verifyCode;
const BACKEND_TEST = 'none';
const BACKEND_ID = 'test';
const BACKEND_USERNAME = 'backend_username';
private $user;
public function rules(){
return [ [['username','password'],'required','message'=>'{attribute}required...'],
['username','validateUser'], ['verifyCode','captcha','captchaAction'=>'login/captcha','message'=>'Wrong'],
];
}
public function validateUser($attribute,$params){
$user = User::findOne(['username'=>$this->username]);
if(!$user || (md5($this->password) != $user['password'])){
$this->addError('password','Wrong>_<...');
}else{
$this->user = $user;
}
}
public function login(){
if(!$this->user){
return false;
}
var_dump($this->userInfo());
$this->createSession();
return true;
}
private function createSession(){
//Yii::$app->session->open();
Yii::$app->set(self::BACKEND_ID,$this->user['id']);
Yii::$app->set(self::BACKEND_USERNAME,$this->user['username']);
}
public function userInfo(){
return $this->user;
}
であり、ユーザがログインしようとすると、セッションが開かれ、サイトのページへの直接とき次のことは、次のとおりです。
この
はログインモデルです。ここ はsitecontrollerです:namespace backend\controllers;
use Yii;
use yii\web\Controller;
use yii\filters\VerbFilter;
use yii\filters\AccessControl;
use common\models\LoginForm;
/**
* Site controller
*/
class SiteController extends Controller
{
public function actionIndex()
{
//var_dump(Yii::$app->session->get(common\models\LoginForm::BACKEND_ID));
var_dump(LoginForm::userInfo());
return $this->renderPartial('index');
}
私がログインしようとするたびに、エラーメッセージが出てくると提供:
無効な構成 - のYii \ベースの\ InvalidConfigException
予期しない構成タイプについて"テスト"コンポーネント:整数
どのように問題を解決するために、私はそのユーザーを取得しようとするtはすべてのデータを格納し、それは失敗するようですか?
main.php:PARAM値.. が、クラスのYii \ウェブ\アプリケーション(別名のYii :: $ APP-を設定するためにあなたはおそらく
Yii::$app->set(self::BACKEND_ID,$this->user['id']);
を使用している
<?php
$params = array_merge(
require(__DIR__ . '/../../common/config/params.php'),
require(__DIR__ . '/../../common/config/params-local.php'),
require(__DIR__ . '/params.php'),
require(__DIR__ . '/params-local.php')
);
return [
'id' => 'app-backend',
'basePath' => dirname(__DIR__),
'controllerNamespace' => 'backend\controllers',
'bootstrap' => ['log'],
'modules' => ['smister' => [
'class' => 'backend\modules\smister\smister',
],],
'components' => [
'user' => [
'identityClass' => 'common\models\User',
'enableAutoLogin' => true,
],
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
'errorHandler' => [
'errorAction' => 'site/error',
],
/*
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
],
],
*/
],
'params' => $params,
];
を設定することができますを使用して簡単にPARAMアクセスすることができ、バックエンド/ configに – scaisEdge
@scaisEdgeこんにちは、メインでごmain.phpを表示しますコードが追加されました。 – newbrant
私は答えを掲示しました..あなたは – scaisEdge