[
  {
    "path": ".gitignore",
    "content": ".DS_Store\nnode_modules/\ndist/\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# Editor directories and files\n.idea\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\nmigrations/\nconfig.py*"
  },
  {
    "path": "README.md",
    "content": "## flask + Vue + Vuex + iview => 前后端分离\n### 提供一个可以复用的 用户注册登录，Token验证，session/cookie 登录的 模板\n\n#### 已完成\n- [x] 用户注册与登录\n- [x] 关联QQ邮箱，注册时发送验证码邮件\n- [x] 登录成功后获取token并缓存在本地\n- [x] 用户登出,销毁Token\n\n#### Todo\n- [ ] Session/Cookie 保持会话\n- [ ] 用户新登录时需要填写验证码,验证码图片由后台Python生成并缓存到Redis,图片显示于前端,登录时前端数据与数据库数据校验\n\n### 现有的特性\n    * 用户密码两次加密,前后端各加密一次\n    * 利用flask_mail多线程发送邮箱\n    * 邮箱验证码缓存在Redis中\n\n------------------------------------------------------------\n#### 展示\n* 登录页\n![Alt text](https://github.com/BeanWei/flask-user-api-template/blob/master/Screenshots/login.PNG)\n\n* 注册页\n![Alt text](https://github.com/BeanWei/flask-user-api-template/blob/master/Screenshots/signin.PNG)\n\n* QQ邮箱\n![Alt text](https://github.com/BeanWei/flask-user-api-template/blob/master/Screenshots/email.PNG)\n\n------------------------------------------------------------\n此项目基本上实现了关于用户的业务逻辑需求,后续的需求可以在此模板上进行再次开发."
  },
  {
    "path": "app/__init__.py",
    "content": "import logging\nfrom logging.handlers import RotatingFileHandler\n\nimport redis\nfrom flask import Flask, request\nfrom flask_cors import CORS\nfrom flask_sqlalchemy import SQLAlchemy\nfrom flask_mail import Mail\n\nfrom config import APP_ENV, config  \n\ndb = SQLAlchemy()\nmail = Mail()\nredis_conn = None\n\ndef setupLogging(level):\n    '''创建日志记录'''\n    # 设置日志的记录等级\n    logging.basicConfig(level=level)\n    # 创建日志记录器，指明日志保存的路径、每个日志文件的最大大小、保存的日志文件个数上限\n    #TODO: 这里的日志记录可以根据日期命名文件名，方便查看每天的日志记录\n    file_log_handler = RotatingFileHandler(\"logs/log\", maxBytes=1024 * 1024 * 100, backupCount=10)\n    # 创建日志记录的格式                 日志等级    输入日志信息的文件名 行数    日志信息\n    formatter = logging.Formatter('%(levelname)s %(filename)s:%(lineno)d %(message)s')\n    # 为刚创建的日志记录器设置日志记录格式\n    file_log_handler.setFormatter(formatter)\n    #为全局添加日志记录器\n    logging.getLogger().addHandler(file_log_handler)\n\n\n# def after_request(response):\n#     '''设置请求头'''\n#     # response.headers.add('Access-Control-Allow-Origin', '*')\n#     # if request.method == 'OPTIONS':\n#     #     response.headers['Access-Control-Allow-Methods'] = 'DELETE, GET, POST, PUT'\n#     #     headers = request.headers.get('Access-Control-Request-Headers')\n#     #     if headers:\n#     #         response.headers['Access-Control-Allow-Headers'] = headers\n#     # return response\n#     response.headers['Access-Control-Allow-Origin'] = '*'\n#     response.headers['Access-Control-Allow-Methods'] = 'PUT,GET,POST,DELETE'\n#     response.headers['Access-Control-Allow-Headers'] = 'Content-Type,Authorization'\n#     return response\n\n\ndef creat_app():\n    '''\n    工厂函数，创建APP实例\n    :return app实例\n    '''\n    setupLogging(config[APP_ENV].LOGGING_LEVEL)\n\n    app = Flask(__name__)\n    app.config.from_object(config[APP_ENV])\n\n    CORS(app, resources=r'/*')\n\n    # app.after_request(after_request)\n\n    #创建Redis数据库连接对象\n    global redis_conn\n    redis_conn = redis.StrictRedis(host=config[APP_ENV].REDIS_HOST, port=config[APP_ENV].REDIS_PORT)\n\n    db.init_app(app)\n    mail.init_app(app)\n\n    #注册api_v1_0 蓝图\n    from app.api_v1 import api\n    app.register_blueprint(api, url_prefix='/api/v1.0')\n\n    return app"
  },
  {
    "path": "app/api_v1/__init__.py",
    "content": "from flask import Blueprint\n\napi = Blueprint('api', __name__)\n\nfrom . import passport, verify"
  },
  {
    "path": "app/api_v1/passport.py",
    "content": "import base64\n\nfrom flask import g, current_app, jsonify, request,make_response\nfrom flask_httpauth import HTTPBasicAuth\nauth = HTTPBasicAuth()\n\nfrom app import db, redis_conn\nfrom app.api_v1 import api\nfrom app.models import User\nfrom app.utils.response_code import RET\nfrom app.utils.email import send_mail\n\n\n@api.route('/signin', methods=['POST'])\ndef signin():\n    '''用户注册接口\n    :return 返回注册信息{'re_code': '0', 'msg': '注册成功'}\n    '''\n    nickname =request.json.get('nickname')\n    email =request.json.get('email')\n    password =request.json.get('password')\n    mailcode_client =request.json.get('mailcode')\n\n    if not all([email, nickname, password, mailcode_client]):\n        return jsonify(re_code=RET.PARAMERR, msg='参数不完整')\n\n    #从Redis中获取此邮箱对应的验证码,与前端传来的数据校验\n    try:\n        mailcode_server = redis_conn.get('EMAILCODE:'+ email).decode()\n    except Exception as e:\n        current_app.logger.debug(e)\n        return jsonify(re_code=RET.DBERR, msg='查询邮箱验证码失败')\n    if mailcode_server != mailcode_client:\n        current_app.logger.debug(mailcode_server)\n        return jsonify(re_code=RET.PARAMERR, msg='邮箱验证码错误')\n    user = User()\n    user.email = email\n    user.nickname = nickname\n    user.password = password    #利用user model中的类属性方法加密用户的密码并存入数据库\n    try:\n        db.session.add(user)\n        db.session.commit()\n    except Exception as e:\n        current_app.logger.debug(e)\n        db.session.rollback()\n        return jsonify(re_code=RET.DBERR, msg='注册失败')\n    #6.响应结果\n    return jsonify(re_code=RET.OK,msg='注册成功')\n\n@api.route('/login', methods=['POST'])\ndef login():\n    '''登录\n    TODO: 添加图片验证\n    :return 返回响应,保持登录状态\n    '''\n    email = request.json.get('email')\n    password = request.json.get('password')\n\n    #解析Authorization\n    #email, password = base64.b64decode(request.headers['Authorization'].split(' ')[-1]).decode().split(':')\n\n    if not all([email, password]):\n        return jsonify(re_code=RET.PARAMERR, msg='参数不完整')\n    try:\n        user = User.query.filter(User.email==email).first()\n    except Exception as e:\n        current_app.logger.debug(e)\n        return jsonify(re_code=RET.DBERR, msg='查询用户失败')\n    if not user:\n        return jsonify(re_code=RET.NODATA, msg='用户不存在',user=user)\n    if not user.verify_password(password):\n        return jsonify(re_code=RET.PARAMERR, msg='帐户名或密码错误')\n\n    #更新最后一次登录时间\n    user.update_last_seen()\n    token = user.generate_user_token()\n    return jsonify(re_code=RET.OK, msg='登录成功',token=token)\n\n\n\n@auth.verify_password\ndef verify_password(email_or_token, password):\n    if request.path == '/login':\n        user = User.query.filter_by(email=email_or_token).first()\n        if not user or not user.verify_password(password):\n            return False\n    else:\n        user = User.verify_user_token(email_or_token)\n        if not user:\n            return False\n        \n    g.user = user\n    return True\n\n    # if not email_or_token:\n    #     return False\n    # email_or_token = re.sub(r'^\"|\"$', '', email_or_token)\n    # user = User.verify_auth_token(email_or_token)\n    # if not user:\n    #     user = User.query.filter_by(email=email_or_token).first()\n    #     if not user or not user.verify_password(password):\n    #         return False\n    # g.user = user\n    # return True\n\n    # user = User.verify_user_token(email_or_token)\n    # if not user:\n    #     # try to authenticate with email/password\n    #     user = User.query.filter_by(email=email_or_token).first()\n    #     if not user or not user.verify_password(password):\n    #         return False\n    # g.user = user\n    # return True\n\n@auth.error_handler\ndef unauthorized():\n    return make_response(jsonify({'error': 'Unauthorized access'}), 401)\n\n\n@api.route('/')\n@auth.login_required\ndef get_resource():\n    return jsonify({'data': 'Hello, %s!' % g.user.email})\n\n\n\n# @api.route('/login')\n# @auth.login_required\n# def get_user_token():\n#     token = g.user.generate_user_token()\n#     return jsonify(re_code=RET.OK, msg='获取Token成功', token=token.decode('ascii'), usr=g.user.email)\n\n"
  },
  {
    "path": "app/api_v1/verify.py",
    "content": "import random\nimport re\nimport json\n\nfrom flask import current_app, jsonify, request, make_response\n\nfrom app import redis_conn\nfrom app.models import User\nfrom app.utils.response_code import RET,error_map\nfrom app.utils.email import send_mail\nfrom . import api\n\n\n@api.route('/mailcode', methods=['POST'])\ndef send_mail_code():\n    '''发送邮箱验证码'''\n    nickname =request.json.get('nickname')\n    email =request.json.get('email')\n    if not all([email, nickname]):\n        return jsonify(re_code=RET.PARAMERR, msg='请填写完整的注册信息')\n\n    #邮箱匹配正则\n    #^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*\\.[a-zA-Z0-9]{2,6}$\n    #手机号匹配正则\n    #^0\\d{2,3}\\d{7,8}$|^1[358]\\d{9}$|^147\\d{8}$\n\n    if not re.match(r'^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*\\.[a-zA-Z0-9]{2,6}$', email):\n        return jsonify(RET.PARAMERR, msg='请填写正确的邮箱')\n\n    #判断用户是否已注册\n    try:\n        user_email = User.query.filter(User.email == email).first()\n        user_nickname = User.query.filter(User.nickname == nickname).first()\n    except Exception as e:\n        current_app.logger.debug(e)\n        return jsonify(re_code=RET.DBERR, msg='查询数据库错误')\n    #用户存在,提示该账户已被注册\n    if user_email or user_nickname:\n        return jsonify(re_code=RET.DATAEXIST, msg='该用户已被注册')\n\n    #生成邮箱验证码\n    email_code = '%06d' % random.randint(0,99999) \n    current_app.logger.debug('邮箱验证码为: ' + email_code)   \n    try:\n        redis_conn.set('EMAILCODE:'+ email, email_code, 1800)   #half-hour = 1800有效期\n    except Exception as e:\n        current_app.logger.debug(e)\n        return jsonify(re_code=RET.DBERR, msg='存储邮箱验证码失败')\n    \n    #发送邮件\n    send_mail(\n        to = email,\n        nickname = nickname,\n        mailcode = email_code\n    )\n\n    return jsonify(re_code=RET.OK, msg='验证码发送成功')"
  },
  {
    "path": "app/auth/__init__.py",
    "content": ""
  },
  {
    "path": "app/auth/auth.py",
    "content": "import jwt, datetime, time\nfrom flask import jsonify\nfrom app.models import User\nfrom config import config\n\nclass Auth():\n    '''\n    Auth_JWT\n    '''\n    @staticmethod\n    def encode_auth_token(user_id, login_time):\n        '''生成认证Token\n        :param user_id: int\n        :param login_time: int(timestamp)\n        :return: string\n        '''\n        try:\n            payload = {\n                'exp': datetime.datetime.utcnow() + datetime.timedelta(days=0, seconds=10),\n                'iat': datetime.datetime.utcnow(),\n                'iss': 'ken',\n                'data': {\n                    'id': user_id,\n                    'login_time': login_time\n                }\n            }\n            return jwt.encode(\n                payload,\n                config.SECRET_KEY,\n                algorithm='HS256'\n            )\n        except Exception as e:\n            return e\n\n    @staticmethod\n    def decode_auth_token(auth_token):\n        '''\n        验证Token\n        :param auth_token:\n        :return: integer|string\n        '''\n        try:\n            # payload = jwt.decode(auth_token, app.config.get('SECRET_KEY'), leeway=datetime.timedelta(seconds=10))\n            # 取消过期时间验证\n            payload = jwt.decode(auth_token, config.SECRET_KEY, options={'verify_exp': False})\n            if ('data' in payload and 'id' in payload['data']):\n                return payload\n            else:\n                raise jwt.InvalidTokenError\n        except jwt.ExpiredSignatureError:\n            return 'Token过期'\n        except jwt.InvalidTokenError:\n            return '无效Token'\n\n\n    def authenticate(self, username, password):\n        '''\n        用户登录，登录成功返回token，写将登录时间写入数据库；登录失败返回失败原因\n        :param password:\n        :return: json\n        '''\n        userInfo = Users.query.filter_by(username=username).first()\n        if (userInfo is None):\n            return jsonify(common.falseReturn('', '找不到用户'))\n        else:\n            if (Users.check_password(Users, userInfo.password, password)):\n                login_time = int(time.time())\n                userInfo.login_time = login_time\n                Users.update(Users)\n                token = self.encode_auth_token(userInfo.id, login_time)\n                return jsonify(common.trueReturn(token.decode(), '登录成功'))\n            else:\n                return jsonify(common.falseReturn('', '密码不正确'))\n\n    def identify(self, request):\n        '''\n        用户鉴权\n        :return: list\n        '''\n        auth_header = request.headers.get('Authorization')\n        if (auth_header):\n            auth_tokenArr = auth_header.split(\" \")\n            if (not auth_tokenArr or auth_tokenArr[0] != 'JWT' or len(auth_tokenArr) != 2):\n                result = common.falseReturn('', '请传递正确的验证头信息')\n            else:\n                auth_token = auth_tokenArr[1]\n                payload = self.decode_auth_token(auth_token)\n                if not isinstance(payload, str):\n                    user = Users.get(Users, payload['data']['id'])\n                    if (user is None):\n                        result = common.falseReturn('', '找不到该用户信息')\n                    else:\n                        if (user.login_time == payload['data']['login_time']):\n                            result = common.trueReturn(user.id, '请求成功')\n                        else:\n                            result = common.falseReturn('', 'Token已更改，请重新登录获取')\n                else:\n                    result = common.falseReturn('', payload)\n        else:\n            result = common.falseReturn('', '没有提供认证token')\n        return result"
  },
  {
    "path": "app/models.py",
    "content": "from datetime import datetime\nfrom werkzeug.security import generate_password_hash, check_password_hash\nfrom itsdangerous import TimedJSONWebSignatureSerializer as Serializer, BadSignature, SignatureExpired\nfrom flask import jsonify, current_app, g, request\nfrom functools import wraps\nfrom app.utils.response_code import RET\n\nfrom . import db\n\nclass User(db.Model):\n    '''用户模型\n    '''\n    __tablename__ = 'users'\n\n    id = db.Column(db.Integer, primary_key=True)\n    email = db.Column(db.String(255), unique=True, index=True)\n    nickname = db.Column(db.String(255), unique=True,index=True) \n    password_hash = db.Column(db.String(128))\n    join_time = db.Column(db.DateTime, default=datetime.utcnow)\n    last_seen = db.Column(db.DateTime, default=datetime.utcnow)\n\n    @property\n    def password(self):\n        raise AttributeError('密码不可访问')\n    @password.setter\n    def password(self, password):\n        '''生成hash密码'''\n        self.password_hash = generate_password_hash(password)\n\n    def verify_password(self, password):\n        '''\n        密码验证\n        :param password-> 用户密码\n        :return 验证成功返回True,否则返回False\n        '''\n        return check_password_hash(self.password_hash, password)\n\n    def generate_user_token(self, expiration=43200):\n        '''\n        生成确认身份的Token(密令)\n        :param expiration-> 有效期限,单位为秒/此处默认设置为12h\n        :return 加密过的token\n        '''\n        s = Serializer(current_app.config['SECRET_KEY'], expires_in=expiration)\n        return s.dumps({'id': self.id, 'email': self.email}).decode('utf-8')\n \n    # 解析token，确认登录的用户身份\n    @staticmethod\n    def verify_user_token(token):\n        s = Serializer(current_app.config['SECRET_KEY'])\n        try:\n            data = s.loads(token)\n        except SignatureExpired:\n            return None  # valid token, but expired\n        except BadSignature:\n            return None  # invalid token\n        user = User.query.get(data['id'])\n        return user\n\n    #额外的功能\n    def update_last_seen(self):\n        '''\n        更新最后一次登录时间\n        '''\n        self.last_seen = datetime.utcnow()\n        db.session.add(self)\n\n    def to_json(self):\n        '''返回用户信息'''\n        return {\n            'user_id': self.id,\n            'nickname': self.nickname,\n            'email': self.email,\n        }\n\n    def __repr__(self):\n        return '<User %r>' % self.nickname\n\n    #TODO: 可以添加用户头像\n\n\n\n"
  },
  {
    "path": "app/utils/__init__.py",
    "content": ""
  },
  {
    "path": "app/utils/common.py",
    "content": "from functools import wraps\nfrom flask import abort, session, jsonify, g\nfrom .response_code import RET\n\ndef login_required(view_func):\n    \"\"\"登录校验装饰器\n    :param func:函数名 \n    :return: 闭包函数名\n    \"\"\"\n    # 装饰器装饰一个函数时，会修改该函数的__name__属性\n    # 如果希望装饰器装饰之后的函数，依然保留原始的名字和说明文档,就需要使用wraps装饰器，装饰内存函数\n    @wraps(view_func)\n    def wrapper(*args,**kwargs):\n        #从session中或取user_id\n        user_id=session.get('user_id')\n        if not user_id:\n            #用户未登录\n            return jsonify(re_code=RET.SESSIONERR,msg='用户未登录')\n        else:\n            #用户已登录使用g变量保存住user_id，方便被装饰的函数中调用g变量获取user_id。\n            g.user_id=user_id\n            return view_func(*args,**kwargs)\n\n    return wrapper\n\n# def login_required(view_func):\n#     \"\"\"登录校验装饰器\n#     :param func:函数名 \n#     :return: 闭包函数名\n#     \"\"\"\n#     # 装饰器装饰一个函数时，会修改该函数的__name__属性\n#     # 如果希望装饰器装饰之后的函数，依然保留原始的名字和说明文档,就需要使用wraps装饰器，装饰内存函数\n#     @wraps(view_func)\n#     def decorated(*args,**kwargs):\n#         token = request.headers.get('Authorization', None)\n#         if token:\n#             string_token = token.encode('ascii', 'ignore')\n#             user = User.verify_user_token(string_token)\n#             if user:\n#                 g.current_user = User\n#                 return view_func(*args,**kwargs)\n        \n#         return jsonify(re_code=RET.SESSIONERR, msg='Authentication is required to access this resource'), 401\n#     return decorated"
  },
  {
    "path": "app/utils/email.py",
    "content": "from threading import Thread\nfrom flask import current_app\nfrom flask_mail import Message\nfrom datetime import datetime\n\nfrom app import mail\n\ndef send_async_email(app, msg):\n    with app.app_context():   #确认程序上下文被激活\n        mail.send(msg)\n\ndef send_mail(to, nickname, mailcode):\n    '''使用新线程异步发送邮箱\n    :param to -> 收件人\n    :param nickname -> 收件人注册时所填写的昵称\n    :param mailcode -> 生成的邮箱验证码\n    :return 执行线程\n    '''\n    app = current_app._get_current_object()\n    msg = Message(app.config['FLASK_MAIL_SUBJECT_PREFIX'] + \"您的账号注册验证码\",\n                  sender=app.config['FLASK_MAIL_SENDER'],\n                  recipients=[to])\n    # 邮件内容会以文本和html两种格式呈现，而你能看到哪种格式取决于你的邮件客户端。\n    msg.body = 'sended by flask-email'\n    msg.html = '''\n    <h1>\n        亲爱的 {nickname},\n    </h1>\n    <h3>\n        欢迎来到 <b>Flask-Test-Project</b>!\n    </h3>\n    <p>\n        您的验证码为 &nbsp;&nbsp; <b>{mailcode}</b> &nbsp;&nbsp; 赶快去完善注册信息吧！！！\n    </p>\n\n    <p>感谢您的支持和理解</p>\n    <p>来自：Flask-Test-Project</p>\n    <p><small>{time}</small></p>\n    '''.format(nickname=nickname, mailcode=mailcode, time=datetime.utcnow)\n    thread = Thread(target=send_async_email, args=[app, msg])\n    thread.start()\n    return thread"
  },
  {
    "path": "app/utils/response_code.py",
    "content": "'''响应状态码\n网页响应的对应的状态码\n'''\n\n\nclass RET:\n    OK                  = \"0\"\n    DBERR               = \"4001\"\n    NODATA              = \"4002\"\n    DATAEXIST           = \"4003\"\n    DATAERR             = \"4004\"\n    SESSIONERR          = \"4101\"\n    LOGINERR            = \"4102\"\n    PARAMERR            = \"4103\"\n    USERERR             = \"4104\"\n    ROLEERR             = \"4105\"\n    PWDERR              = \"4106\"\n    REQERR              = \"4201\"\n    IPERR               = \"4202\"\n    THIRDERR            = \"4301\"\n    IOERR               = \"4302\"\n    SERVERERR           = \"4500\"\n    UNKOWNERR           = \"4501\"\n\nerror_map = {\n    RET.OK                    : u\"成功\",\n    RET.DBERR                 : u\"数据库查询错误\",\n    RET.NODATA                : u\"无数据\",\n    RET.DATAEXIST             : u\"数据已存在\",\n    RET.DATAERR               : u\"数据错误\",\n    RET.SESSIONERR            : u\"用户未登录\",\n    RET.LOGINERR              : u\"用户登录失败\",\n    RET.PARAMERR              : u\"参数错误\",\n    RET.USERERR               : u\"用户不存在或未激活\",\n    RET.ROLEERR               : u\"用户身份错误\",\n    RET.PWDERR                : u\"密码错误\",\n    RET.REQERR                : u\"非法请求或请求次数受限\",\n    RET.IPERR                 : u\"IP受限\",\n    RET.THIRDERR              : u\"第三方系统错误\",\n    RET.IOERR                 : u\"文件读写错误\",\n    RET.SERVERERR             : u\"内部错误\",\n    RET.UNKOWNERR             : u\"未知错误\",\n}"
  },
  {
    "path": "logs/log",
    "content": "INFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 21:51:00] \"POST /api/v1.0/signin HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 21:51:20] \"GET /api/v1.0/token HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 22:12:24] \"GET /api/v1.0/token HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 22:14:10] \"GET /api/v1.0/token HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 22:15:49] \"GET /api/v1.0/resource HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 22:16:14] \"GET /api/v1.0/resource HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 22:20:54] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 22:21:23] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 22:42:54] \"GET /api/v1.0/resource HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 22:52:35] \"OPTIONS /api/login HTTP/1.1\" 404 -\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 22:52:38] \"OPTIONS /api/login HTTP/1.1\" 404 -\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 22:52:42] \"OPTIONS /api/login HTTP/1.1\" 404 -\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 22:53:18] \"OPTIONS /api/login HTTP/1.1\" 404 -\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 22:55:17] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 22:55:17] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 23:06:29] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 23:06:29] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 23:11:20] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 23:11:20] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 23:16:37] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 23:16:37] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 23:16:53] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 23:16:53] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 23:17:15] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 23:17:15] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 23:17:48] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 23:17:48] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 23:21:54] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 23:21:54] \"GET /api/v1.0/login HTTP/1.1\" 405 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 23:22:26] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 23:22:26] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 23:28:07] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 23:28:07] \"GET /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 23:28:50] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 23:28:50] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 23:34:45] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 23:34:45] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\__init__.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 23:37:46] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 23:37:46] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\__init__.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 23:39:03] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [20/Apr/2018 23:39:03] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 00:05:17] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 00:05:17] \"GET /api/v1.0/login HTTP/1.1\" 405 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 00:06:29] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 00:06:29] \"GET /api/v1.0/login HTTP/1.1\" 405 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 00:12:24] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 00:12:24] \"GET /api/v1.0/login HTTP/1.1\" 405 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 00:16:35] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 00:16:35] \"GET /api/v1.0/login HTTP/1.1\" 405 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 00:16:46] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 00:16:46] \"GET /api/v1.0/login HTTP/1.1\" 405 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 00:21:00] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 00:21:00] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 09:10:29] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 09:10:29] \"GET /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\__init__.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 09:21:46] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 09:21:46] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 09:22:09] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 09:22:09] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 09:22:09] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 09:22:09] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 09:42:40] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 09:42:40] \"GET /api/v1.0/login HTTP/1.1\" 405 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 10:33:31] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 10:33:31] \"POST /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 10:41:27] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 10:41:27] \"POST /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 10:56:04] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 10:56:04] \"POST /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 10:57:11] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 10:57:11] \"POST /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 10:59:31] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 10:59:31] \"POST /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:00:30] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:00:30] \"POST /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:02:33] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:02:33] \"POST /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\__init__.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:05:13] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:05:13] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:12:26] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:12:26] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:13:15] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:13:15] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:13:19] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:13:20] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:13:21] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:13:21] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:13:21] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:13:21] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:13:21] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:13:22] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:13:22] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:13:22] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:13:32] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:13:32] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:30:46] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:30:46] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:32:10] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:32:10] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:34:21] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:34:21] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:34:49] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:34:49] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:39:09] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 11:39:09] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 12:00:01] \"GET /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 12:00:26] \"GET /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 12:01:49] \"GET /api/v1.0/ HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 12:07:06] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 12:07:06] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 12:07:18] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 12:07:18] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 12:10:25] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 12:10:25] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 12:11:31] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 12:11:31] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 12:13:37] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 12:13:37] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 12:47:45] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 12:48:12] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 12:48:12] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 12:50:16] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 12:50:16] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 12:51:37] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 12:51:37] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 12:53:43] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 12:53:43] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 12:58:16] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 12:58:16] \"GET /api/v1.0/login HTTP/1.1\" 401 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 13:41:30] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 13:52:47] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 13:53:43] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 13:54:15] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 14:00:44] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 14:02:38] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 14:07:03] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 14:10:16] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 14:11:14] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\models.py', reloading\nINFO _internal.py:88  * Restarting with stat\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 14:44:25] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 14:44:47] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 14:49:28] \"GET /api/v1.0/eyJhbGciOiJIUzI1NiIsImlhdCI6MTUyNDI4MzIyNiwiZXhwIjoxNTI0MzI2NDI2fQ.eyJpZCI6MX0.fzbjJamKO-Nk9ATN1P4DH4FkU2H0lFXoB50FBDKTz-w HTTP/1.1\" 404 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 14:50:37] \"GET /api/v1.0/ HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\models.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:10:49] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:10:49] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:12:00] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:12:00] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:14:31] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:14:31] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:16:57] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:16:57] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:17:03] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:17:03] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:17:49] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:17:49] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:19:05] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:19:05] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:22:05] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:22:05] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:22:42] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:22:42] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:23:29] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:23:30] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:23:33] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:25:52] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:25:52] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:26:02] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:26:02] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:26:48] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:26:48] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:28:01] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:28:01] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:28:11] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:28:11] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:29:45] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:29:45] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:31:02] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:31:02] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:31:35] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:31:35] \"POST /api/v1.0/login HTTP/1.1\" 400 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:35:41] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:35:41] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:43:24] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:43:24] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:44:43] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:44:43] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:45:48] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:45:48] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:56:10] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:56:10] \"POST /api/v1.0/login HTTP/1.1\" 400 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:56:57] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:56:57] \"POST /api/v1.0/login HTTP/1.1\" 400 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 15:59:08] \"POST /api/v1.0/login HTTP/1.1\" 400 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:00:10] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:00:33] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:07:56] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:08:35] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:10:46] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:10:51] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:10:51] \"POST /api/v1.0/login HTTP/1.1\" 400 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:11:03] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:11:03] \"POST /api/v1.0/login HTTP/1.1\" 400 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:11:30] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:11:30] \"POST /api/v1.0/login HTTP/1.1\" 400 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:21:11] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:22:29] \"POST /api/v1.0/login HTTP/1.1\" 400 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:23:03] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:23:03] \"POST /api/v1.0/login HTTP/1.1\" 400 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:23:08] \"POST /api/v1.0/login HTTP/1.1\" 400 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:24:35] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:25:02] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:25:59] \"POST /api/v1.0/login HTTP/1.1\" 400 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:26:07] \"POST /api/v1.0/login HTTP/1.1\" 400 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:26:24] \"POST /api/v1.0/login HTTP/1.1\" 400 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:27:10] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:29:46] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:31:02] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:34:03] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:34:56] \"POST /api/v1.0/login HTTP/1.1\" 400 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:35:10] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:36:55] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:37:47] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:39:54] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:40:23] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:42:24] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:42:30] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:42:30] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:42:39] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:42:39] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:43:26] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:43:26] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:44:22] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:44:22] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:48:55] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:48:59] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:48:59] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:52:30] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:52:33] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 16:52:33] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 18:43:01] \"OPTIONS /api/v1.0/signin HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 18:43:01] \"POST /api/v1.0/signin HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 18:43:20] \"OPTIONS /api/v1.0/signin HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [21/Apr/2018 18:43:20] \"POST /api/v1.0/signin HTTP/1.1\" 200 -\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 01:30:03] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 01:31:34] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\verify.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\config.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 01:48:19] \"POST /api/v1.0/mailcode HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 01:51:46] \"POST /api/v1.0/signin HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 01:52:19] \"POST /api/v1.0/signin HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 01:52:40] \"POST /api/v1.0/mailcode HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 01:52:52] \"POST /api/v1.0/signin HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 01:56:27] \"POST /api/v1.0/mailcode HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 01:56:37] \"POST /api/v1.0/signin HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 01:57:36] \"POST /api/v1.0/signin HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 01:58:55] \"POST /api/v1.0/signin HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 02:01:21] \"POST /api/v1.0/signin HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 02:08:17] \"POST /api/v1.0/signin HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 02:09:25] \"POST /api/v1.0/signin HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 02:11:06] \"POST /api/v1.0/signin HTTP/1.1\" 200 -\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 08:46:02] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 08:46:02] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 08:50:19] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 08:50:19] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 08:56:48] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 08:56:48] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 08:58:03] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 08:58:03] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 08:58:53] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 08:58:53] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 09:04:14] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 09:04:14] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 09:04:35] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 09:04:35] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 09:05:00] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 09:05:00] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 09:06:37] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 09:06:37] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 09:13:19] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 09:13:19] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 09:15:55] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 09:15:55] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 09:37:36] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 09:37:36] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\__init__.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 09:44:05] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 09:44:05] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\__init__.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 10:13:39] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 10:13:39] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\__init__.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 10:39:34] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 10:39:34] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 10:47:40] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 10:53:07] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 11:06:52] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 11:14:26] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 11:15:53] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 11:17:03] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 11:18:33] \"POST /api/v1.0/login HTTP/1.1\" 500 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 11:19:26] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 11:20:14] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 11:20:14] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 11:24:03] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 11:24:03] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 11:26:58] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 11:26:58] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 11:44:33] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 11:44:33] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 11:47:14] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 11:47:14] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 11:47:17] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 11:48:31] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 11:48:31] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 11:53:48] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 11:53:48] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 11:57:19] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 11:57:19] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 11:57:21] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 11:59:17] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 11:59:17] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 14:46:32] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 14:46:32] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 14:47:12] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 14:47:12] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 14:48:37] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 14:48:37] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 14:48:40] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\config.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 14:56:41] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 14:56:41] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 14:58:01] \"POST /api/v1.0/login HTTP/1.1\" 400 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 14:58:32] \"POST /api/v1.0/login HTTP/1.1\" 400 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 15:00:47] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 15:01:35] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 15:02:43] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 15:03:07] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 15:03:41] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 15:03:41] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 15:04:23] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 15:04:24] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\passport.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\app\\\\api_v1\\\\verify.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\config.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 15:09:21] \"OPTIONS /api/v1.0/mailcode HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 15:09:21] \"POST /api/v1.0/mailcode HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 15:09:45] \"OPTIONS /api/v1.0/signin HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 15:09:45] \"POST /api/v1.0/signin HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 15:12:11] \"OPTIONS /api/v1.0/signin HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 15:12:11] \"POST /api/v1.0/signin HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 15:12:56] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 15:12:56] \"POST /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88  * Detected change in 'E:\\\\WebProject\\\\MyProject\\\\flask-user-API-template\\\\config.py', reloading\nINFO _internal.py:88  * Restarting with stat\nWARNING _internal.py:88  * Debugger is active!\nINFO _internal.py:88  * Debugger PIN: 163-446-745\nINFO _internal.py:88  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 15:16:42] \"OPTIONS /api/v1.0/login HTTP/1.1\" 200 -\nINFO _internal.py:88 127.0.0.1 - - [22/Apr/2018 15:16:42] \"POST /api/v1.0/login HTTP/1.1\" 200 -\n"
  },
  {
    "path": "manage.py",
    "content": "import os\n\nfrom app import creat_app, db\nfrom app import models\nfrom flask_script import Manager, Shell\nfrom flask_migrate import Migrate, MigrateCommand\n\napp = creat_app()\nmanager = Manager(app)\nmigrate = Migrate(app, db)\n\ndef make_shell_context():\n    return dict(app=app, db=db, User=models.User)\n\n'''\n数据库迁移指令\npython manage.py db init\npython manage.py db migrate\npython manage.py db upgrade\n'''\nmanager.add_command('shell', Shell(make_context=make_shell_context))\nmanager.add_command('db', MigrateCommand)\n\n@manager.command\ndef deploy():\n    '''\n    部署命令\n    '''\n    from flask_migrate import upgrade\n    upgrade()\n\nif __name__ == \"__main__\":\n    manager.run()\n\n"
  },
  {
    "path": "vuejs/.babelrc",
    "content": "{\n  \"presets\": [\n    [\"env\", {\n      \"modules\": false,\n      \"targets\": {\n        \"browsers\": [\"> 1%\", \"last 2 versions\", \"not ie <= 8\"]\n      }\n    }],\n    \"stage-2\"\n  ],\n  \"plugins\": [\"transform-runtime\"],\n  \"env\": {\n    \"test\": {\n      \"presets\": [\"env\", \"stage-2\"],\n      \"plugins\": [\"istanbul\"]\n    }\n  }\n}\n"
  },
  {
    "path": "vuejs/.editorconfig",
    "content": "root = true\n\n[*]\ncharset = utf-8\nindent_style = space\nindent_size = 2\nend_of_line = lf\ninsert_final_newline = true\ntrim_trailing_whitespace = true\n"
  },
  {
    "path": "vuejs/.gitignore",
    "content": ".DS_Store\nnode_modules/\ndist/\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# Editor directories and files\n.idea\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n"
  },
  {
    "path": "vuejs/.postcssrc.js",
    "content": "// https://github.com/michael-ciniawsky/postcss-load-config\n\nmodule.exports = {\n  \"plugins\": {\n    // to edit target browsers: use \"browserslist\" field in package.json\n    \"autoprefixer\": {}\n  }\n}\n"
  },
  {
    "path": "vuejs/.vscode/settings.json",
    "content": "{\n    \"git.ignoreLimitWarning\": true\n}"
  },
  {
    "path": "vuejs/README.md",
    "content": "# blog2.0\n\n> A Vue.js project\n\n## Build Setup\n\n``` bash\n# install dependencies\nnpm install\n\n# serve with hot reload at localhost:8080\nnpm run dev\n\n# build for production with minification\nnpm run build\n\n# build for production and view the bundle analyzer report\nnpm run build --report\n```\n\nFor detailed explanation on how things work, checkout the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader).\n"
  },
  {
    "path": "vuejs/build/build.js",
    "content": "require('./check-versions')()\n\nprocess.env.NODE_ENV = 'production'\n\nvar ora = require('ora')\nvar rm = require('rimraf')\nvar path = require('path')\nvar chalk = require('chalk')\nvar webpack = require('webpack')\nvar config = require('../config')\nvar webpackConfig = require('./webpack.prod.conf')\n\nvar spinner = ora('building for production...')\nspinner.start()\n\nrm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {\n  if (err) throw err\n  webpack(webpackConfig, function (err, stats) {\n    spinner.stop()\n    if (err) throw err\n    process.stdout.write(stats.toString({\n      colors: true,\n      modules: false,\n      children: false,\n      chunks: false,\n      chunkModules: false\n    }) + '\\n\\n')\n\n    if (stats.hasErrors()) {\n      console.log(chalk.red('  Build failed with errors.\\n'))\n      process.exit(1)\n    }\n\n    console.log(chalk.cyan('  Build complete.\\n'))\n    console.log(chalk.yellow(\n      '  Tip: built files are meant to be served over an HTTP server.\\n' +\n      '  Opening index.html over file:// won\\'t work.\\n'\n    ))\n  })\n})\n"
  },
  {
    "path": "vuejs/build/check-versions.js",
    "content": "var chalk = require('chalk')\nvar semver = require('semver')\nvar packageConfig = require('../package.json')\nvar shell = require('shelljs')\nfunction exec (cmd) {\n  return require('child_process').execSync(cmd).toString().trim()\n}\n\nvar versionRequirements = [\n  {\n    name: 'node',\n    currentVersion: semver.clean(process.version),\n    versionRequirement: packageConfig.engines.node\n  }\n]\n\nif (shell.which('npm')) {\n  versionRequirements.push({\n    name: 'npm',\n    currentVersion: exec('npm --version'),\n    versionRequirement: packageConfig.engines.npm\n  })\n}\n\nmodule.exports = function () {\n  var warnings = []\n  for (var i = 0; i < versionRequirements.length; i++) {\n    var mod = versionRequirements[i]\n    if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {\n      warnings.push(mod.name + ': ' +\n        chalk.red(mod.currentVersion) + ' should be ' +\n        chalk.green(mod.versionRequirement)\n      )\n    }\n  }\n\n  if (warnings.length) {\n    console.log('')\n    console.log(chalk.yellow('To use this template, you must update following to modules:'))\n    console.log()\n    for (var i = 0; i < warnings.length; i++) {\n      var warning = warnings[i]\n      console.log('  ' + warning)\n    }\n    console.log()\n    process.exit(1)\n  }\n}\n"
  },
  {
    "path": "vuejs/build/dev-client.js",
    "content": "/* eslint-disable */\nrequire('eventsource-polyfill')\nvar hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true')\n\nhotClient.subscribe(function (event) {\n  if (event.action === 'reload') {\n    window.location.reload()\n  }\n})\n"
  },
  {
    "path": "vuejs/build/dev-server.js",
    "content": "require('./check-versions')()\n\nvar config = require('../config')\nif (!process.env.NODE_ENV) {\n  process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV)\n}\n\nvar opn = require('opn')\nvar path = require('path')\nvar express = require('express')\nvar webpack = require('webpack')\nvar proxyMiddleware = require('http-proxy-middleware')\nvar webpackConfig = require('./webpack.dev.conf')\n\n// default port where dev server listens for incoming traffic\nvar port = process.env.PORT || config.dev.port\n// automatically open browser, if not set will be false\nvar autoOpenBrowser = !!config.dev.autoOpenBrowser\n// Define HTTP proxies to your custom API backend\n// https://github.com/chimurai/http-proxy-middleware\nvar proxyTable = config.dev.proxyTable\n\nvar app = express()\nvar compiler = webpack(webpackConfig)\n\nvar devMiddleware = require('webpack-dev-middleware')(compiler, {\n  publicPath: webpackConfig.output.publicPath,\n  quiet: true\n})\n\nvar hotMiddleware = require('webpack-hot-middleware')(compiler, {\n  log: false,\n  heartbeat: 2000\n})\n// force page reload when html-webpack-plugin template changes\ncompiler.plugin('compilation', function (compilation) {\n  compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) {\n    hotMiddleware.publish({ action: 'reload' })\n    cb()\n  })\n})\n\n// proxy api requests\nObject.keys(proxyTable).forEach(function (context) {\n  var options = proxyTable[context]\n  if (typeof options === 'string') {\n    options = { target: options }\n  }\n  app.use(proxyMiddleware(options.filter || context, options))\n})\n\n// handle fallback for HTML5 history API\napp.use(require('connect-history-api-fallback')())\n\n// serve webpack bundle output\napp.use(devMiddleware)\n\n// enable hot-reload and state-preserving\n// compilation error display\napp.use(hotMiddleware)\n\n// serve pure static assets\nvar staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory)\napp.use(staticPath, express.static('./static'))\n\nvar uri = 'http://localhost:' + port\n\nvar _resolve\nvar readyPromise = new Promise(resolve => {\n  _resolve = resolve\n})\n\nconsole.log('> Starting dev server...')\ndevMiddleware.waitUntilValid(() => {\n  console.log('> Listening at ' + uri + '\\n')\n  // when env is testing, don't need open it\n  if (autoOpenBrowser && process.env.NODE_ENV !== 'testing') {\n    opn(uri)\n  }\n  _resolve()\n})\n\nvar server = app.listen(port)\n\nmodule.exports = {\n  ready: readyPromise,\n  close: () => {\n    server.close()\n  }\n}\n"
  },
  {
    "path": "vuejs/build/utils.js",
    "content": "var path = require('path')\nvar config = require('../config')\nvar ExtractTextPlugin = require('extract-text-webpack-plugin')\n\nexports.assetsPath = function (_path) {\n  var assetsSubDirectory = process.env.NODE_ENV === 'production'\n    ? config.build.assetsSubDirectory\n    : config.dev.assetsSubDirectory\n  return path.posix.join(assetsSubDirectory, _path)\n}\n\nexports.cssLoaders = function (options) {\n  options = options || {}\n\n  var cssLoader = {\n    loader: 'css-loader',\n    options: {\n      minimize: process.env.NODE_ENV === 'production',\n      sourceMap: options.sourceMap\n    }\n  }\n\n  // generate loader string to be used with extract text plugin\n  function generateLoaders (loader, loaderOptions) {\n    var loaders = [cssLoader]\n    if (loader) {\n      loaders.push({\n        loader: loader + '-loader',\n        options: Object.assign({}, loaderOptions, {\n          sourceMap: options.sourceMap\n        })\n      })\n    }\n\n    // Extract CSS when that option is specified\n    // (which is the case during production build)\n    if (options.extract) {\n      return ExtractTextPlugin.extract({\n        use: loaders,\n        fallback: 'vue-style-loader'\n      })\n    } else {\n      return ['vue-style-loader'].concat(loaders)\n    }\n  }\n\n  // https://vue-loader.vuejs.org/en/configurations/extract-css.html\n  return {\n    css: generateLoaders(),\n    postcss: generateLoaders(),\n    less: generateLoaders('less'),\n    sass: generateLoaders('sass', { indentedSyntax: true }),\n    scss: generateLoaders('sass'),\n    stylus: generateLoaders('stylus'),\n    styl: generateLoaders('stylus')\n  }\n}\n\n// Generate loaders for standalone style files (outside of .vue)\nexports.styleLoaders = function (options) {\n  var output = []\n  var loaders = exports.cssLoaders(options)\n  for (var extension in loaders) {\n    var loader = loaders[extension]\n    output.push({\n      test: new RegExp('\\\\.' + extension + '$'),\n      use: loader\n    })\n  }\n  return output\n}\n"
  },
  {
    "path": "vuejs/build/vue-loader.conf.js",
    "content": "var utils = require('./utils')\nvar config = require('../config')\nvar isProduction = process.env.NODE_ENV === 'production'\n\nmodule.exports = {\n  loaders: utils.cssLoaders({\n    sourceMap: isProduction\n      ? config.build.productionSourceMap\n      : config.dev.cssSourceMap,\n    extract: isProduction\n  }),\n  transformToRequire: {\n    video: 'src',\n    source: 'src',\n    img: 'src',\n    image: 'xlink:href'\n  }\n}\n"
  },
  {
    "path": "vuejs/build/webpack.base.conf.js",
    "content": "var path = require('path')\nvar fs = require('fs')\nvar utils = require('./utils')\nvar config = require('../config')\nvar vueLoaderConfig = require('./vue-loader.conf')\n\nfunction resolve (dir) {\n  return path.join(__dirname, '..', dir)\n}\n\nmodule.exports = {\n  entry: {\n    app: './src/main.js'\n  },\n  output: {\n    path: config.build.assetsRoot,\n    filename: '[name].js',\n    publicPath: process.env.NODE_ENV === 'production'\n      ? config.build.assetsPublicPath\n      : config.dev.assetsPublicPath\n  },\n  resolve: {\n    extensions: ['.js', '.vue', '.json'],\n    alias: {\n      'vue$': 'vue/dist/vue.esm.js',\n      '@': resolve('src'),\n    },\n    symlinks: false\n  },\n  module: {\n    rules: [\n      {\n        test: /\\.vue$/,\n        loader: 'vue-loader',\n        options: vueLoaderConfig\n      },\n      {\n        test: /\\.js$/,\n        loader: 'babel-loader',\n        include: [resolve('src'), resolve('test')]\n      },\n      {\n        test: /\\.(png|jpe?g|gif|svg)(\\?.*)?$/,\n        loader: 'url-loader',\n        options: {\n          limit: 10000,\n          name: utils.assetsPath('img/[name].[hash:7].[ext]')\n        }\n      },\n      {\n        test: /\\.(mp4|webm|ogg|mp3|wav|flac|aac)(\\?.*)?$/,\n        loader: 'url-loader',\n        options: {\n          limit: 10000,\n          name: utils.assetsPath('media/[name].[hash:7].[ext]')\n        }\n      },\n      {\n        test: /\\.(woff2?|eot|ttf|otf)(\\?.*)?$/,\n        loader: 'url-loader',\n        options: {\n          limit: 10000,\n          name: utils.assetsPath('fonts/[name].[hash:7].[ext]')\n        }\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "vuejs/build/webpack.dev.conf.js",
    "content": "var utils = require('./utils')\nvar webpack = require('webpack')\nvar config = require('../config')\nvar merge = require('webpack-merge')\nvar baseWebpackConfig = require('./webpack.base.conf')\nvar HtmlWebpackPlugin = require('html-webpack-plugin')\nvar FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')\n\n// add hot-reload related code to entry chunks\nObject.keys(baseWebpackConfig.entry).forEach(function (name) {\n  baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name])\n})\n\nmodule.exports = merge(baseWebpackConfig, {\n  module: {\n    rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap })\n  },\n  // cheap-module-eval-source-map is faster for development\n  devtool: '#cheap-module-eval-source-map',\n  plugins: [\n    new webpack.DefinePlugin({\n      'process.env': config.dev.env\n    }),\n    // https://github.com/glenjamin/webpack-hot-middleware#installation--usage\n    new webpack.HotModuleReplacementPlugin(),\n    new webpack.NoEmitOnErrorsPlugin(),\n    // https://github.com/ampedandwired/html-webpack-plugin\n    new HtmlWebpackPlugin({\n      filename: 'index.html',\n      template: 'index.html',\n      inject: true\n    }),\n    new FriendlyErrorsPlugin()\n  ]\n})\n"
  },
  {
    "path": "vuejs/build/webpack.prod.conf.js",
    "content": "var path = require('path')\nvar utils = require('./utils')\nvar webpack = require('webpack')\nvar config = require('../config')\nvar merge = require('webpack-merge')\nvar baseWebpackConfig = require('./webpack.base.conf')\nvar CopyWebpackPlugin = require('copy-webpack-plugin')\nvar HtmlWebpackPlugin = require('html-webpack-plugin')\nvar ExtractTextPlugin = require('extract-text-webpack-plugin')\nvar OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')\n\nvar env = config.build.env\n\nvar webpackConfig = merge(baseWebpackConfig, {\n  module: {\n    rules: utils.styleLoaders({\n      sourceMap: config.build.productionSourceMap,\n      extract: true\n    })\n  },\n  devtool: config.build.productionSourceMap ? '#source-map' : false,\n  output: {\n    path: config.build.assetsRoot,\n    filename: utils.assetsPath('js/[name].[chunkhash].js'),\n    chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')\n  },\n  plugins: [\n    // http://vuejs.github.io/vue-loader/en/workflow/production.html\n    new webpack.DefinePlugin({\n      'process.env': env\n    }),\n    new webpack.optimize.UglifyJsPlugin({\n      compress: {\n        warnings: false\n      },\n      sourceMap: true\n    }),\n    // extract css into its own file\n    new ExtractTextPlugin({\n      filename: utils.assetsPath('css/[name].[contenthash].css')\n    }),\n    // Compress extracted CSS. We are using this plugin so that possible\n    // duplicated CSS from different components can be deduped.\n    new OptimizeCSSPlugin({\n      cssProcessorOptions: {\n        safe: true\n      }\n    }),\n    // generate dist index.html with correct asset hash for caching.\n    // you can customize output by editing /index.html\n    // see https://github.com/ampedandwired/html-webpack-plugin\n    new HtmlWebpackPlugin({\n      filename: config.build.index,\n      template: 'index.html',\n      inject: true,\n      minify: {\n        removeComments: true,\n        collapseWhitespace: true,\n        removeAttributeQuotes: true\n        // more options:\n        // https://github.com/kangax/html-minifier#options-quick-reference\n      },\n      // necessary to consistently work with multiple chunks via CommonsChunkPlugin\n      chunksSortMode: 'dependency'\n    }),\n    // keep module.id stable when vender modules does not change\n    new webpack.HashedModuleIdsPlugin(),\n    // split vendor js into its own file\n    new webpack.optimize.CommonsChunkPlugin({\n      name: 'vendor',\n      minChunks: function (module, count) {\n        // any required modules inside node_modules are extracted to vendor\n        return (\n          module.resource &&\n          /\\.js$/.test(module.resource) &&\n          module.resource.indexOf(\n            path.join(__dirname, '../node_modules')\n          ) === 0\n        )\n      }\n    }),\n    // extract webpack runtime and module manifest to its own file in order to\n    // prevent vendor hash from being updated whenever app bundle is updated\n    new webpack.optimize.CommonsChunkPlugin({\n      name: 'manifest',\n      chunks: ['vendor']\n    }),\n    // copy custom static assets\n    new CopyWebpackPlugin([\n      {\n        from: path.resolve(__dirname, '../static'),\n        to: config.build.assetsSubDirectory,\n        ignore: ['.*']\n      }\n    ])\n  ]\n})\n\nif (config.build.productionGzip) {\n  var CompressionWebpackPlugin = require('compression-webpack-plugin')\n\n  webpackConfig.plugins.push(\n    new CompressionWebpackPlugin({\n      asset: '[path].gz[query]',\n      algorithm: 'gzip',\n      test: new RegExp(\n        '\\\\.(' +\n        config.build.productionGzipExtensions.join('|') +\n        ')$'\n      ),\n      threshold: 10240,\n      minRatio: 0.8\n    })\n  )\n}\n\nif (config.build.bundleAnalyzerReport) {\n  var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin\n  webpackConfig.plugins.push(new BundleAnalyzerPlugin())\n}\n\nmodule.exports = webpackConfig\n"
  },
  {
    "path": "vuejs/config/dev.env.js",
    "content": "var merge = require('webpack-merge')\nvar prodEnv = require('./prod.env')\n\nmodule.exports = merge(prodEnv, {\n  NODE_ENV: '\"development\"'\n})\n"
  },
  {
    "path": "vuejs/config/index.js",
    "content": "// see http://vuejs-templates.github.io/webpack for documentation.\nvar path = require('path')\n\nmodule.exports = {\n  build: {\n    env: require('./prod.env'),\n    index: path.resolve(__dirname, '../dist/index.html'),\n    assetsRoot: path.resolve(__dirname, '../dist'),\n    assetsSubDirectory: 'static',\n    assetsPublicPath: '/',\n    productionSourceMap: true,\n    // Gzip off by default as many popular static hosts such as\n    // Surge or Netlify already gzip all static assets for you.\n    // Before setting to `true`, make sure to:\n    // npm install --save-dev compression-webpack-plugin\n    productionGzip: false,\n    productionGzipExtensions: ['js', 'css'],\n    // Run the build command with an extra argument to\n    // View the bundle analyzer report after build finishes:\n    // `npm run build --report`\n    // Set to `true` or `false` to always turn it on or off\n    bundleAnalyzerReport: process.env.npm_config_report\n  },\n  dev: {\n    env: require('./dev.env'),\n    port: 8080,\n    autoOpenBrowser: true,\n    assetsSubDirectory: 'static',\n    assetsPublicPath: '/',\n    proxyTable: {},\n    // CSS Sourcemaps off by default because relative paths are \"buggy\"\n    // with this option, according to the CSS-Loader README\n    // (https://github.com/webpack/css-loader#sourcemaps)\n    // In our experience, they generally work as expected,\n    // just be aware of this issue when enabling this option.\n    cssSourceMap: false\n  }\n}\n"
  },
  {
    "path": "vuejs/config/prod.env.js",
    "content": "module.exports = {\n  NODE_ENV: '\"production\"'\n}\n"
  },
  {
    "path": "vuejs/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <title></title>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <link href=\"/static/css/style.css\" rel=\"stylesheet\">\n    <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/icon?family=Material+Icons\">\n</head>\n\n<body>\n    <div id=\"app\"></div>\n</body>\n\n</html>"
  },
  {
    "path": "vuejs/package.json",
    "content": "{\n  \"name\": \"blog2.0\",\n  \"version\": \"1.0.0\",\n  \"description\": \"A Vue.js project\",\n  \"author\": \"xingyys <598223084@qq.com>\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"node build/dev-server.js\",\n    \"start\": \"node build/dev-server.js\",\n    \"build\": \"node build/build.js\"\n  },\n  \"dependencies\": {\n    \"axios\": \"^0.16.2\",\n    \"js-md5\": \"^0.7.3\",\n    \"less\": \"^2.7.2\",\n    \"less-loader\": \"^4.0.5\",\n    \"muse-ui\": \"^2.1.0\",\n    \"vue\": \"^2.4.2\",\n    \"vue-router\": \"^2.7.0\",\n    \"vuex\": \"^2.4.0\"\n  },\n  \"devDependencies\": {\n    \"autoprefixer\": \"^7.1.2\",\n    \"babel-core\": \"^6.22.1\",\n    \"babel-loader\": \"^7.1.1\",\n    \"babel-plugin-transform-runtime\": \"^6.22.0\",\n    \"babel-preset-env\": \"^1.3.2\",\n    \"babel-preset-stage-2\": \"^6.22.0\",\n    \"babel-register\": \"^6.22.0\",\n    \"chalk\": \"^2.0.1\",\n    \"connect-history-api-fallback\": \"^1.3.0\",\n    \"copy-webpack-plugin\": \"^4.0.1\",\n    \"css-loader\": \"^0.28.0\",\n    \"cssnano\": \"^3.10.0\",\n    \"eventsource-polyfill\": \"^0.9.6\",\n    \"express\": \"^4.14.1\",\n    \"extract-text-webpack-plugin\": \"^2.0.0\",\n    \"file-loader\": \"^0.11.1\",\n    \"friendly-errors-webpack-plugin\": \"^1.1.3\",\n    \"html-webpack-plugin\": \"^2.28.0\",\n    \"http-proxy-middleware\": \"^0.17.3\",\n    \"iview\": \"^2.3.2\",\n    \"opn\": \"^5.1.0\",\n    \"optimize-css-assets-webpack-plugin\": \"^2.0.0\",\n    \"ora\": \"^1.2.0\",\n    \"rimraf\": \"^2.6.0\",\n    \"semver\": \"^5.3.0\",\n    \"shelljs\": \"^0.7.6\",\n    \"url-loader\": \"^0.5.8\",\n    \"vue-loader\": \"^13.0.4\",\n    \"vue-style-loader\": \"^3.0.1\",\n    \"vue-template-compiler\": \"^2.3.3\",\n    \"webpack\": \"^2.6.1\",\n    \"webpack-bundle-analyzer\": \"^2.2.1\",\n    \"webpack-dev-middleware\": \"^1.10.0\",\n    \"webpack-hot-middleware\": \"^2.18.0\",\n    \"webpack-merge\": \"^4.1.0\"\n  },\n  \"engines\": {\n    \"node\": \">= 4.0.0\",\n    \"npm\": \">= 3.0.0\"\n  },\n  \"browserslist\": [\n    \"> 1%\",\n    \"last 2 versions\",\n    \"not ie <= 8\"\n  ]\n}\n"
  },
  {
    "path": "vuejs/src/App.vue",
    "content": "<template>\n    <div id=\"app\">\n        <router-view></router-view>\n    </div>\n</template>\n\n<script>\nexport default {\n    name: 'app',\n    data() {\n        return {\n            \n        }\n    },\n    methods: {\n\n    }\n}\n</script>\n\n<style lang=\"less\" scoped>\n\n</style>\n\n"
  },
  {
    "path": "vuejs/src/api/api.js",
    "content": "import axios from 'axios'\n\nlet baseURL = 'http://127.0.0.1:5000/api/v1.0'\n\nexport const requestLogin = params => {\n    return axios ({\n        method: 'POST',\n        url: `${baseURL}/login`,\n        data: params\n    })\n    .then(res => res.data)\n}\n\nexport const requestSignin = params => {\n    return axios ({\n        method: 'POST',\n        url: `${baseURL}/signin`,\n        data: params\n    })\n    .then(res => res.data)\n}\n\nexport const requestMailcode = params => {\n    return axios ({\n        method: 'POST',\n        url: `${baseURL}/mailcode`,\n        data: params\n    })\n    .then(res => res.data)\n}"
  },
  {
    "path": "vuejs/src/api/index.js",
    "content": "import * as api from './api'\nexport default api"
  },
  {
    "path": "vuejs/src/main.js",
    "content": "// The Vue build version to load with the `import` command\n// (runtime-only or standalone) has been set in webpack.base.conf with an alias.\nimport Vue from 'vue'\nimport App from './App'\nimport router from './router'\nimport store from './store'\nimport axios from 'axios'\nimport iView from 'iview'\nimport 'iview/dist/styles/iview.css'\nimport {Message} from 'iview'\n\nVue.component('Message', Message)\n\nVue.use(iView)\nVue.config.productionTip = false\n\n// axios.interceptors.request.use((config) => {\n//     console.log(config)\n//     return config;\n// }, (error) => {\n//     Message.error(error)\n//     return Promise.reject(error)\n// })\n\naxios.interceptors.request.use( config => {\n    if (localStorage.token) {\n        config.headers.Authorization = `token ${localStorage.token}`\n    }\n    return config\n},err => {\n    return Promise.reject(err)\n})\n\naxios.interceptors.response.use((response) => {\n    return response;\n}, (error) => {\n    if (error.response) {\n        console.log(error)\n        switch (error.response.status) {\n            case 401:\n                store.commit('del_token')\n                router.push('/login')\n        }\n        Message.error('请重新登录')\n    }\n    return Promise.reject(error.response.data)\n})\n\nrouter.beforeEach((to, from, next) => {\n    if (to.meta.required) {\n        if (localStorage.token) {\n            store.commit('set_token', localStorage.token)\n            axios.defaults.auth = {\n                email: store.state.token,\n                password: store.state.token,\n            }\n            iView.LoadingBar.start();\n            next()\n        } else {\n            next({\n                path: '/login',\n            })\n        }\n    } else {\n        iView.LoadingBar.start();\n        next()\n    }\n})\n\nrouter.afterEach((to, from, next) => {\n    iView.LoadingBar.finish();\n})\n\n\nVue.prototype.$axios = axios\n    /* eslint-disable no-new */\nnew Vue({\n    el: '#app',\n    router,\n    store,\n    template: '<App/>',\n    components: { App }\n})"
  },
  {
    "path": "vuejs/src/router/index.js",
    "content": "import Vue from 'vue'\nimport Router from 'vue-router'\nimport Index from '../views/index'\nimport Login from '../views/passport/login'\nimport Signin from '../views/passport/signin'\n\nVue.use(Router)\n\nexport default new Router({\n    routes: [{\n        path: '/',\n        name: 'index',\n        component: Index,\n        meta: {\n            required: true,\n        }\n    }, {\n        path: '/login',\n        name: 'login',\n        component: Login,\n    }, {\n        path: '/signin',\n        name: 'signin',\n        component: Signin\n    }]\n})"
  },
  {
    "path": "vuejs/src/store/index.js",
    "content": "import Vue from 'vue'\nimport Vuex from 'vuex'\n\nVue.use(Vuex)\n\nexport default new Vuex.Store({\n    state: {\n        token: ''\n    },\n    mutations: {\n        set_token(state, token) {\n            state.token = token\n            localStorage.token = token\n        },\n        del_token(state) {\n            state.token = ''\n            localStorage.removeItem('token')\n        }\n    }\n})"
  },
  {
    "path": "vuejs/src/utils/core.js",
    "content": "/**\n * JS-MD5加密用户密码\n * @param  pwd\n */\nexport const encryptedPassword =(pwd) => {\n    let md5 = require('js-md5');\n    let pwdkey = md5(pwd);\n    return pwdkey;\n  }\n  "
  },
  {
    "path": "vuejs/src/views/index.vue",
    "content": "<template>\n<div id=\"index\">\n    <Row type=\"flex\" justify=\"center\">\n         <Col span=\"3\">\n            <h1>{{ msg }}</h1>\n            <!-- <Icon type=\"load-a\" size=\"50\" class=\"loading\"></Icon> -->\n        </Col> \n        <Button @click=\"logout\">注销</Button>\n    </Row>\n</div>\n</template>\n\n<script>\nexport default {\n    name: 'index',\n    data: function() {\t\n        return {\n            msg: \"\"\n        }\n    },\n    methods: {\n        logout() {\n            this.$store.commit('del_token')\n            this.$router.push('/login')\n        }\n    },\n    created() {\n        this.$axios.get(\"/\").then(response => {\n            this.msg = response.data\n        }).catch(error => {\n            console.log(error)\n            this.$Message.error(error)\n        })\n    }\n}\n</script>\n\n<style lang=\"less\" scoped>\n.index {\n    background: #f8f8f9;\n}\n.loading {\n    animation: myloading 1s linear infinite;\n    margin-top: 100px;\n}\n@keyframes myloading{\n    from {\n        transform: rotate(0deg);\n    }\n    50% {\n        transform: rotate(180deg);\n    }\n    to {\n        transform: rotate(360deg);\n    }\n}\n</style>\n"
  },
  {
    "path": "vuejs/src/views/passport/login.vue",
    "content": "<template>\n<div id=\"login\" >\n    <Row type=\"flex\" justify=\"center\">\n        <img src=\"../../assets/login.jpg\" alt=\"\" :style=\"bg\">\n        <Col span=\"5\">\n            <Card class=\"form\">\n                <div slot=\"title\">\n                    登录页\n                </div>\n                <Form ref=\"formInline\" :model=\"formInline\" :rules=\"ruleInline\" >\n                    <FormItem prop=\"email\">\n                        <Input type=\"text\" v-model=\"formInline.email\" placeholder=\"邮箱\" size=\"large\" @on-enter=\"handleSubmit('formInline', formInline)\">\n                            <Icon slot=\"prepend\" type=\"person\"></Icon>\n                        </Input>\n                    </FormItem>\n                    <FormItem prop=\"password\">\n                        <Input type=\"password\" v-model=\"formInline.password\" placeholder=\"密码\"  size=\"large\" @on-enter=\"handleSubmit('formInline', formInline)\">\n                            <Icon slot=\"prepend\" type=\"locked\"></Icon>\n                        </Input>\n                    </FormItem>\n                    <FormItem>\n                        <Button type=\"info\" @click=\"handleSubmit('formInline', formInline)\" long>登录</Button>\n                    </FormItem>\n                </Form>\n                <div class=\"ft\">\n                    <router-link to=\"/signin\">没有账号？马上注册</router-link>\n                </div>\n            </Card>\n        </Col>\n    </Row>\n</div>\n</template>\n<script>\n    import { requestLogin } from '../../api/api'\n    import * as coreJS from '../../utils/core'\n    export default {\n        name: 'login',\n        data () {\n            return {\n                formInline: {\n                    email: '',\n                    password: ''\n                },\n                ruleInline: {\n                    email: [\n                        { required: true, message: '请填写邮箱', trigger: 'blur' },\n                        { type: 'email', message: '请输入正确的邮箱地址', trigger: 'blur,change' }\n                    ],\n                    password: [\n                        { required: true, message: '请填写密码', trigger: 'blur' },\n                        { type: 'string', min: 6, message: '密码长度不能小于6位', trigger: 'blur' }\n                    ]\n                },\n                bg: {\n                    width: `${window.innerWidth}px`,\n                    height: `${window.innerHeight}px`,\n                    position: \"absolute\",\n                }\n            }\n        },\n        computed: {\n            mdpassword: function () {\n                return coreJS.encryptedPassword(this.formInline.password)\n            }\n        },\n        methods: {\n            handleSubmit(name, form) {\n                this.$refs[name].validate((valid) => {\n                    if (valid) {\n                        var loginParams = {\n                            email: form.email,\n                            password: this.mdpassword\n                        }\n                        requestLogin(loginParams).then(response => {\n                            if (response.re_code === \"0\" ) {\n                                this.$Message.success(\"登录成功\")\n                                let token = response.token\n                                this.$store.commit('set_token', token)\n                                this.$router.push('/')\n                            } else {\n                                this.$Message.error(response.msg)\n                            }  \n                        }).catch(error => {\n                            this.$Message.error(error.status)\n                        })\n                    } else {\n                        this.$Message.error('表单验证失败!');\n                    }\n                })\n            }\n        }\n    }\n</script>\n\n<style lang=\"less\" scoped>\n#login {\n    font-family: Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,SimSun,sans-serif;\n}\n.bg {\n    position: absolute;\n}\n.form {\n    text-align: center;\n    margin-top: 150px;\n    p {\n        font-size: 30px;\n    }\n}\n.ft {\n  display: flex;\n  flex-direction: row;\n  justify-content: flex-start;\n  align-items: center;\n  width: 300px;\n}\n.ft a {\n  font-size: 14px;\n  text-decoration: none;\n  color: #20A0FF;\n}\n</style>"
  },
  {
    "path": "vuejs/src/views/passport/signin.vue",
    "content": "<template>\n<div id=\"signin\" >\n    <Row type=\"flex\" justify=\"center\">\n        <img src=\"../../assets/login.jpg\" alt=\"\" :style=\"bg\">\n        <Col span=\"5\">\n            <Card class=\"form\">\n                <div slot=\"title\">\n                    注册页\n                </div>\n                <Form ref=\"formInline\" :model=\"formInline\" :rules=\"ruleInline\" >\n                    <FormItem prop=\"nickname\">\n                        <Input type=\"text\" v-model=\"formInline.nickname\" placeholder=\"昵称\" size=\"large\" @on-enter=\"handleSubmit('formInline', formInline)\">\n                            <Icon slot=\"prepend\" type=\"icecream\"></Icon>\n                        </Input>\n                    </FormItem>\n                    <FormItem prop=\"email\">\n                        <Input type=\"text\" v-model=\"formInline.email\" placeholder=\"邮箱\" size=\"large\" @on-enter=\"handleSubmit('formInline', formInline)\">\n                            <Icon slot=\"prepend\" type=\"email\"></Icon>\n                        </Input>\n                    </FormItem>\n                    <FormItem prop=\"password\">\n                        <Input type=\"password\" v-model=\"formInline.password\" placeholder=\"密码\"  size=\"large\" @on-enter=\"handleSubmit('formInline', formInline)\">\n                            <Icon slot=\"prepend\" type=\"locked\"></Icon>\n                        </Input>\n                    </FormItem>\n                    <FormItem prop=\"repassword\">\n                        <Input type=\"password\" v-model=\"formInline.repassword\" placeholder=\"确认密码\"  size=\"large\" @on-enter=\"handleSubmit('formInline', formInline)\">\n                            <Icon slot=\"prepend\" type=\"locked\"></Icon>\n                        </Input>\n                    </FormItem>\n                    <FormItem prop=\"captcha\">\n                        <Input type=\"text\" v-model=\"formInline.mailcode\" placeholder=\"邮箱收到的验证码\"  size=\"large\" @on-enter=\"handleSubmit('formInline', formInline)\">                          \n                            <Icon slot=\"prepend\" type=\"paper-airplane\"></Icon>\n                            <Button slot=\"append\" @click=\"getMailcode()\">发送验证码</Button>\n                        </Input>\n                    </FormItem>\n                    <FormItem>\n                        <Button type=\"info\" @click=\"handleSubmit('formInline', formInline)\" long>注册</Button>\n                    </FormItem>\n                </Form>\n                <div class=\"ft\">\n                    <router-link to=\"/login\">已有账号？马上登录</router-link>\n                </div>\n            </Card>\n        </Col>\n    </Row>\n</div>\n</template>\n\n<script>\nimport { requestSignin, requestMailcode } from '../../api/api'\nimport * as coreJS from '../../utils/core'\nexport default {\n    name: 'signin',\n    data () {\n    var validateUser = (rule, value, cb) => {\n      var pattern = /^[\\w\\u4e00-\\u9fa5]{3,10}$/g\n      if (value === '') {\n        cb(new Error('请输入昵称'))\n      } else if (!pattern.test(value)) {\n        cb(new Error('请输入3-10个字母/汉字/数字/下划线'))\n      } else {\n        cb()\n      }\n    }\n    var validatePwd = (rule, value, cb) => {\n      var pattern = /^\\S{6,20}$/g\n      if (value === '') {\n        cb(new Error('请输入密码'))\n      } else if (!pattern.test(value)) {\n        cb(new Error('请输入6-20个非空白字符'))\n      } else {\n        if (this.formInline.repassword !== '') {\n          this.$refs.formInline.validateField('repassword')\n        }\n        cb()\n      }\n    }\n    var validateCheckPwd = (rule, value, cb) => {\n      if (value === '') {\n        cb(new Error('请再次输入密码'))\n      } else if (value !== this.formInline.password) {\n        cb(new Error('两次输入密码不一致!'))\n      } else {\n        cb()\n      }\n    }\n    return {\n      formInline: {\n        nickname: '',\n        email: '',\n        password: '',\n        repassword: '',\n        mailcode: ''\n      },\n      ruleInline: {\n        nickname: [\n        { validator: validateUser, trigger: 'blur' }\n        ],\n        email: [\n        { required: true, message: '请输入邮箱地址', trigger: 'blur' },\n        { type: 'email', message: '请输入正确的邮箱地址', trigger: 'blur,change' }\n        ],\n        password: [\n        { validator: validatePwd, trigger: 'blur' }\n        ],\n        repassword: [\n        { validator: validateCheckPwd, trigger: 'blur' }\n        ],\n        mailcode: [\n        { required: true, message: '请输入验证码', trigger: 'blur' }\n        ]       \n      },\n      bg: {\n        width: `${window.innerWidth}px`,\n        height: `${window.innerHeight}px`,\n        position: \"absolute\",\n        }\n    }\n  },\n  computed: {\n    mdpassword: function () {\n        return coreJS.encryptedPassword(this.formInline.password)\n    }\n  },\n  methods: {\n    handleSubmit(name, form) {\n        this.$refs[name].validate((valid) => {\n            if (valid && this.formInline.mailcode) {\n                var signinParams = {\n                    nickname: form.nickname,\n                    email: form.email,\n                    password: this.mdpassword,\n                    mailcode: this.formInline.mailcode\n                }\n                requestSignin(signinParams).then(response => {\n                    if (response.re_code === \"0\" ) {\n                        this.$Message.success(\"注册成功\")\n                        this.$router.push('/login')\n                    } else {\n                        this.$Message.error(response.msg)\n                    }  \n                }).catch(error => {\n                    this.$Message.error(error.status)\n                })\n            } else {\n                this.$Message.error('信息不完整');\n            }\n        })\n    },\n    getMailcode() {\n        if (this.formInline.nickname && this.formInline.email && this.formInline.password && this.formInline.repassword) {\n            var mailcodeParams = {\n                nickname: this.formInline.nickname,\n                email: this.formInline.email\n            }\n            requestMailcode(mailcodeParams).then(response => {\n                if (response.re_code === \"0\" ) {\n                    this.$Message.success(\"验证码已发送\")\n                } else {\n                    this.$Message.error(response.msg)\n                }  \n            }).catch(error => {\n                this.$Message.error(error.status)\n            })\n        } else {\n            this.$Message.error('信息不完整');\n        }\n    }\n}\n}\n</script>\n\n<style lang=\"less\" scoped>\n#signin {\n    font-family: Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,SimSun,sans-serif;\n}\n.bg {\n    position: absolute;\n}\n.form {\n    text-align: center;\n    margin-top: 150px;\n    p {\n        font-size: 30px;\n    }\n}\n.ft {\n  display: flex;\n  flex-direction: row;\n  justify-content: flex-start;\n  align-items: center;\n  width: 300px;\n}\n.ft a {\n  font-size: 14px;\n  text-decoration: none;\n  color: #20A0FF;\n}\n</style>"
  },
  {
    "path": "vuejs/static/.gitkeep",
    "content": ""
  },
  {
    "path": "vuejs/static/css/style.css",
    "content": ""
  }
]