2017-06-28 09:51:25 3074次浏览 5条回答 0 悬赏 10 金钱

目前实现的登录是这样的:

public function actionLogin(){
        $request = Yii::$app->request;
        if(!$request->isPost){
            return ['status'=>'fail','msg'=>'请求方式 错误'];
        }
        $model = new UserModel();
        if (Yii::$app->request->post('user_name')) {
//        if ($model->load(Yii::$app->getRequest()->getBodyParams())) {
            $user_name = $request->post('user_name');
            $user_pwd = $request->post('user_pwd');

            $res = $model->login($user_name,$user_pwd);
            return $res;
        }
        return ['status'=>'fail','msg'=>'load 错误'];
    }

public function login($user_name,$user_pwd)
    {
        if ($this->validate()) {
            $user = self::findByUser_name($user_name);
            if($user['user_pwd'] == md5($user_pwd)){
                return ['status'=>'success','user_id'=>$user['user_id'],'user_realname'=>$user['user_realname'],'access_token'=>$user['access_token']];
            }else {
                return ['status'=>'fail','msg'=>'密码错误'];
            }
        } else {
            return ['status'=>'fail','msg'=>'账户或者密码错误'];
        }
    }

以上只是解决了登录问题,并没有用YII的登录方法,导致,使用Yii::$app->user->username获取不到用户信息,求助各位同仁
$model->load(Yii::$app->getRequest()->post()),load不到提交的数据

  • 回答于 2017-06-28 09:58 举报

    $model->login怎么实现的

    7 条回复
    回复于 2017-06-28 10:04 回复
    public function login($user_name,$user_pwd)
        {
            if ($this->validate()) {
                $user = self::findByUser_name($user_name);
                if($user['user_pwd'] == md5($user_pwd)){
                    return ['status'=>'success','user_id'=>$user['user_id'],'user_realname'=>$user['user_realname'],'access_token'=>$user['access_token']];
                }else {
                    return ['status'=>'fail','msg'=>'密码错误'];
                }
            } else {
                return ['status'=>'fail','msg'=>'账户或者密码错误'];
            }
        }
    
    回复于 2017-06-28 10:29 回复

    这个return 肯定拿不到呀

    回复于 2017-06-28 10:29 回复

    那应该怎么办呀

    回复于 2017-06-28 10:34 回复

    存session咯

    回复于 2017-06-28 10:41 回复

    不建议存session不是么

    回复于 2017-06-28 10:49 回复

    yii的登录也是存session的

    回复于 2017-06-28 10:50 回复

    要不你就写在缓存吧

  • 回答于 2017-06-28 23:30 举报

    rest一般使用access-token登陆

    public function behaviors() {
            return ArrayHelper::merge(parent::behaviors(), [
                'authenticator' => [
                    'class' => CompositeAuth::className(),
                    'authMethods' => [
                        QueryParamAuth::className(),
                    ],
                ]
            ]);
        }
    

    access-token存放在user标里面的access_token这个字段里面

    1 条回复
    回复于 2017-06-29 17:18 回复

    嗯,我还是希望有一个用户名和密码登录的方法,然后返回access_token

    觉得很赞
  • 回答于 2017-06-29 16:17 举报

    $model->load(Yii::$app->getRequest()->post(),'') 第二个参数为空就OK

    2 条回复
    回复于 2017-06-29 17:20 回复

    我试过,虽然这儿返回了真,但是,$this->validate()验证也是不能通过的,我还是过,直接把post的值赋值给对象的属性,但是也不行

    回复于 2017-07-03 15:00 回复

    $model->load($data['login-form'=>Yii::$app->getRequest()->post()])也能解决load返回false的问题,但同样validate验证不能通过

  • 回答于 2017-06-30 17:45 举报

    public function actionIndex(){

        $loginModel = new Login();
        $loginModel->load(['Login'=>Yii::$app->request->post()]);
    	if ($loginModel->validate ()) {
    		$rs = $loginModel->login ();
    	} else {
    		return Helper::format_data ( PARAM_ERROR, $loginModel->getErrors () );
    	}
    }
    
    1 条回复
    回复于 2017-07-03 15:01 回复

    validate验证不通过

  • 回答于 2017-07-01 23:59 举报

    可以加我qq,互相讨论一下:469912494

您需要登录后才可以回答。登录 | 立即注册
陈诺
主管

陈诺 北京

注册时间:2017-06-26
最后登录:2018-03-20
在线时长:5小时51分
  • 粉丝4
  • 金钱610
  • 威望0
  • 积分660

热门问题