美文网首页
[PHP高可用后端]④⑤--登陆权限控制

[PHP高可用后端]④⑤--登陆权限控制

作者: 子木同 | 来源:发表于2017-12-01 17:25 被阅读80次

    Login.php

    //if ($code != $param['code']) {
             //   return show(config('code.error'), '手机短信验证码不合法', [], 404);
            //}
    
    'token' => $obj->encryt($token . '||' . $id),
    

    route.php

    <?php
    use think\Route;
    
    Route::get('test', 'api/test/index');
    //Route::resource('test', 'api/test');
    
    Route::get('api/:ver/cat', 'api/:ver.cat/read');
    
    Route::get('api/:ver/index', 'api/:ver.index/index');
    
    Route::resource('api/:ver/news', 'api/:ver.news');
    
    Route::get('api/:ver/rank', 'api/:ver.rank/index');
    
    Route::get('api/:ver/init', 'api/:ver.index/init');
    
    Route::get('test/tetssend', 'api/test/testSend');
    
    Route::resource('api/:ver/identify', 'api/:ver.identify');
    
    Route::post('api/:ver/login', 'api/:ver.login/save');
    
    //test
    Route::post('api/:ver/user', 'api/:ver.user/save');
    

    AuthBase.php(Controller)

    <?php
    /**
     * Created by PhpStorm.
     * User: tong
     * Date: 2017/12/1
     * Time: 16:16
     */
    
    namespace app\api\controller\v1;
    
    use app\api\controller\Common;
    use app\common\lib\Aes;
    use app\common\lib\exception\ApiException;
    
    /**
     * 客户端auth登陆权限基础类库
     * 1.每个接口(需要登陆 个人中心 点赞 评论)都需要去集成
     * 2.判定 access_user_token 是否合法
     * 3.用户变量
     * Class AuthBase
     * @package app\api\controller\v1
     */
    class AuthBase extends Common
    {
        /**
         * 登陆用户的基本信息
         * @var array
         */
        public $user = [];
    
        public function _initialize()
        {
            parent::_initialize();
            if (!$this->isLogin()) {
                throw new ApiException('您没有登陆', 401);
            }
        }
    
        /**
         * 判定是否登陆
         */
        public function isLogin()
        {
            if (empty($this->headers['access_user_token'])) {
                return false;
            }
            $obj = new Aes();
            $access_user_token = $obj->decrypt($this->headers['access_user_token']);
            //7b.....||1
            // halt($access_user_token);
            if (empty($access_user_token)) {
                return false;
            }
            if (!preg_match('/||/', $access_user_token)) {
                return false;
            }
    
            list($token, $id) = explode("||", $access_user_token);
            $user = \app\common\model\User::get(['token' => $token]);
            //halt($user);
    
            if (!$user || $user->status != 1) {
                return false;
            }
            //判断时间是否过期
            if (time() > $user->time_out) {
                return false;
            }
            $this->user = $user;
            return true;
        }
    }
    

    User.php(Controller)

    <?php
    /**
     * Created by PhpStorm.
     * User: tong
     * Date: 2017/12/1
     * Time: 16:52
     */
    
    namespace app\api\controller\v1;
    
    class User extends AuthBase
    {
        public function save()
        {
            return show('12', 'OK', []);
        }
    }
    
    image.png

    access_user_token加强安全性

    类似sign 在token 后面加时间戳并进行AES加密
    服务端解密后保存缓存实现请求唯一性

    微信截图_20171201173246.png

    相关文章

      网友评论

          本文标题:[PHP高可用后端]④⑤--登陆权限控制

          本文链接:https://www.haomeiwen.com/subject/qmswbxtx.html