发现sppserver用户登陆的函数ationAccount81行没传值导致登陆不了

bug问题 · itxsy · 于 3年前 发布 · 1198 次阅读

发现3个小问题: 1、sppserver用户登陆的函数ationAccount81行没传值导致登陆不了。 文件路径: \vendor\fancyecommerce\fecshop\app\appserver\modules\Customer\controllers\LoginController.php 79-81行左右:

if($accessToken){
            $code = Yii::$service->helper->appserver->status_success;
            $data = [];
            $responseData = Yii::$service->helper->appserver->getResponseData($code, $data);

改成:

if($accessToken){
            $code = Yii::$service->helper->appserver->status_success;
            $data = ['accessToken'=>$accessToken];//panda 2020.10.18 未传token
            $responseData = Yii::$service->helper->appserver->getResponseData($code, $data);

即可。

2、安装了fecyo后的手机版注册,验证码后台关闭之后,前台还是显示输入验证码的框。但是不填是可以注册成功咯。 解决办法:\addons\fecmall\fecyo\app\apphtml5\theme\fecyo\customer\account\register.php 大概32行,在显示验证码div代码外面加上判断:<?php if($registerPageCaptcha): ?>。98行结束,即可。 3、后台CMS-page管理,文章状态不能关闭,这个功能找了下,没解决。请官方或者大神来解决吧!

共收到 4 条回复
Fecmall#13年前 0 个赞

先收藏一下,后面处理,多谢。

Fecmall#23年前 0 个赞

最近fecro刚忙完,回头解决最近的问题

1.这个没有问题,因为accessToken不是在返回的内容里面,而是在response header里面

\vendor\fancyecommerce\fecshop\app\appserver\modules\Customer\controllers\LoginController.php 79-81行左右

$accessToken = Yii::$service->customer->loginAndGetAccessToken($email,$password);
        if($accessToken){
            $code = Yii::$service->helper->appserver->status_success;
            $data = [];
            $responseData = Yii::$service->helper->appserver->getResponseData($code, $data);
            
            return $responseData;
        }

追踪一下函数:Yii::$service->customer->loginAndGetAccessToken($email,$password);

打开文件 @fecshop/services/Customer.php

/** AppServer 部分使用的函数
     * @param $email | String
     * @param $password | String
     * 无状态登录,通过email 和password进行登录
     * 登录成功后,合并购物车,返回accessToken
     * ** 该函数是未登录用户,通过参数进行登录需要执行的函数。
     */
    public function loginAndGetAccessToken($email, $password)
    {
        $header = Yii::$app->request->getHeaders();
        if (isset($header['access-token']) && $header['access-token']) {
            $accessToken = $header['access-token'];
        }
        // 如果request header中有access-token,则查看这个 access-token 是否有效
        if ($accessToken) {
            $identity = Yii::$app->user->loginByAccessToken($accessToken);
            if ($identity !== null) {
                $access_token_created_at = $identity->access_token_created_at;
                $timeout = Yii::$service->session->timeout;
                if ($access_token_created_at + $timeout > time()) {
                    
                    return $accessToken;
                }
            }
        }
        // 如果上面access-token不存在
        $data = [
            'email'     => $email,
            'password'  => $password,
        ];
        
        if (Yii::$service->customer->login($data)) {
            $identity = Yii::$app->user->identity;
            $identity->generateAccessToken();
            $identity->access_token_created_at = time();
            $identity->save();
            // 执行购物车合并等操作。
            Yii::$service->cart->mergeCartAfterUserLogin();
            $this->setHeaderAccessToken($identity->access_token);
            
            return $identity->access_token;
        }
    }

继续追踪函数: $this->setHeaderAccessToken($identity->access_token);

public function setHeaderAccessToken($accessToken)
    {
        if ($accessToken) {
            Yii::$app->response->getHeaders()->set('access-token', $accessToken);
            
            return true;
        }
    }

可以看到, Yii::$app->response->getHeaders()->set('access-token', $accessToken);

您在返回值的response header里面将 access-token取出来就可以了

Fecmall#33年前 0 个赞

2.fecyo后的手机版注册的问题

h5入口存在这个问题,已经修复,下个版本更新/

Fecmall#43年前 0 个赞

3.关于cms aritcle的status enable 和 disable问题,这个已经修复,详细参看代码提交:

https://github.com/fecshop/yii2_fecshop/commit/4682e1bfc3e2a6ac19e872d5e4b60457330f97d4

本周处理完用户提交的问题,就会发新版,您composer升级一下即可。

关于cms page article , 关联帖子:http://www.fecmall.com/topic/4531

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Your Site Analytics