App web 跨平台信息同步

来源:互联网 发布:java float 比较大小 编辑:程序博客网 时间:2024/06/11 04:43

2016年10月28日17:07:03
项目需求:

web端报名参加活动- need login-
App 内打开web-view -if app内登录过 web端也需要同步登录信息
遇到的问题:
App内WebView 再次打开Cookie 丢失–so login info 丢失

前端处理:
login 成功后将cookie 利用h5 localstorage本地存储存起来
每次打开页面js 方法判断cookie 。 localstorage 是否存在。
这样可以持久化cookie.防止cookie丢失问题。

—————构造函数 获取用户信息from redis //// struct-data=>hash

        $token = $_COOKIE['dy_web_login_cookie'];//本地存储的token --通过login 获取        if (empty($token)) {//没登录            //获取 是否是APP内登录 打开的标示            //  $token = $_COOKIE['dy_game_app_cookie'];//本地存储的token --通过login 获取            //检测--逻辑        }        $redis = Cache::getInstance('Redis');        $redis_json = $redis->hget('dy_web_user_list', $token);        $redisInfo = json_decode($redis_json, true);        $this->userInfo = $redisInfo;        $this->assign("userInfo", $redisInfo);

————— 登录成功后set 用户信息 —————

        login success -生成token        $redis = Cache::getInstance('Redis');        $field = sha1($mobile. rand(1, 999999));        $userInfo['tle'] = time() + 24 * 3600 * 30;        $userInfo['token'] = $field;        $redisInfo = json_encode($userInfo);        $redis->hset('dy_web_user_list', $field, $redisInfo);//set user_info        $redis->hset('dy_web_mobile_token', $mobile, $field);//mobile to  =>best new token        setcookie('dy_web_login_cookie', $field,time() + 24 * 3600 * 30);

当APP内改变用户信息的时候执行syncRedisInfoByMobile。这样Redis 的数据也更新了–当我们对模板赋值的时候就是最新的了。

    public function syncRedisInfoByMobile($mobile, $result)    {        $redis = Cache::getInstance('Redis');        $gameTokenByMobile = $redis->hget('dy_web_mobile_token', $mobile);//mobile bind token        if (!empty($gameTokenByMobile)) {            $redis_json = $redis->hget('dy_web_user_list', $gameTokenByMobile);//token bind dy_user_info            $redisInfo = json_decode($redis_json, true);            foreach($result as $k => $v){                $redisInfo[$k] = $v;            }            $redis->hset('dy_web_user_list', $gameTokenByMobile, $redisInfo);//token bind dy_user_info        }        return true;    }

如何在前端判断当前客户端是否登录?
需要客户端配合 封装javascript:interface
比如:
xiaowei.getLoginStatus();

1 0
原创粉丝点击