微信小程序> 小程序验签过程

小程序验签过程

浏览量:673 时间: 来源:dj1540225203
?phpnamespace appcommoncontroller;use appcommonutilAuthUtil;use ThinkLog;/** * 接口基类 * @author hardphp@163.com */class Api extends thinkController{    public function _initialize()    {        //跨域访问        if (config('app_debug') == true) {            header("Access-Control-Allow-Origin:*");            // 响应类型            header("Access-Control-Allow-Methods:GET,POST");            // 响应头设置            header("Access-Control-Allow-Headers:x-requested-with,content-type,x-access-token,x-access-appid");        }        //签名验证        AuthUtil::checkSign();    }}

 

?phpnamespace appcommonutil;use appcommonutilJwtUtil;use appcommonCommonConstant;use thinkDb;/** * 权限认证 * @author hardphp@163.com * */class AuthUtil{    /**     * 签名验证,校验数据     */    public static function checkSign()    {        $appid = request()-header('x-access-appid');        if (empty($appid)) {            my_exception(null, CommonConstant::e_app_miss);        }        // 实时数据        $app = Db::name('app')-where(['appId' = $appid])-find();        //认证:状态        if ($app ['isEnabled'] != CommonConstant::db_true) {            my_exception(null, CommonConstant::e_app_disabled);        }        // 接口签名认证        if (config("system.app_sign_auth_on") === true) {            $signature = input("signature"); // app端生成的签名            $param     = input("param.");            unset($param['signature']);            if (empty($signature)) {                my_exception(null, CommonConstant::e_api_sign_miss);            }            //数组排序            ksort($param);            $str        = http_build_query($param);            $signature1 = md5(sha1($str) . $app['appSecret']);            if ($signature != $signature1) {                my_exception(null, CommonConstant::e_api_sign_wrong);            }        }        return msg_return(1, 'ok');    }    /**     * 验证用户身份     * @param string $type user 普通用户,admin 管理员,seller 商家     * @return multitype:     */    public static function checkUser($type = 'user')    {        // JWT用户令牌认证,令牌内容获取        $userToken = request()-header('x-access-token');        if (empty($userToken)) {            my_exception(null, CommonConstant::e_api_user_token_miss);        }        $userToken = think_decrypt($userToken);        $payload   = JwtUtil::decode($userToken);        if ($payload === false || empty($payload-uid) || empty($payload-loginTime)) {            my_exception(null, CommonConstant::e_api_user_token_miss);        }        //用户登录有效期        $userLoginTime = config('system.user_login_time');        if ($payload-loginTime  time() - $userLoginTime) {            my_exception(null, CommonConstant::e_api_user_token_expire);        }        // 实时用户数据        $user = Db::name($type)-getById($payload-uid);        //是否多设备登录        if (!empty($user ['loginTime']) && $user ['loginTime'] != $payload-loginTime) {            my_exception(null, CommonConstant::e_api_multiple_device_login);        }        //认证:状态        if ($user ['isEnabled'] != CommonConstant::db_true) {            my_exception(null, CommonConstant::e_user_disabled);        }        return msg_return(1, $user);    }}

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎