Repository: BeanWei/flask-user-api-template
Branch: master
Commit: 5cefcd0313a6
Files: 47
Total size: 125.1 KB
Directory structure:
gitextract_c8g0wq5i/
├── .gitignore
├── README.md
├── app/
│ ├── __init__.py
│ ├── api_v1/
│ │ ├── __init__.py
│ │ ├── passport.py
│ │ └── verify.py
│ ├── auth/
│ │ ├── __init__.py
│ │ └── auth.py
│ ├── models.py
│ └── utils/
│ ├── __init__.py
│ ├── common.py
│ ├── email.py
│ └── response_code.py
├── logs/
│ └── log
├── manage.py
└── vuejs/
├── .babelrc
├── .editorconfig
├── .gitignore
├── .postcssrc.js
├── .vscode/
│ └── settings.json
├── README.md
├── build/
│ ├── build.js
│ ├── check-versions.js
│ ├── dev-client.js
│ ├── dev-server.js
│ ├── utils.js
│ ├── vue-loader.conf.js
│ ├── webpack.base.conf.js
│ ├── webpack.dev.conf.js
│ └── webpack.prod.conf.js
├── config/
│ ├── dev.env.js
│ ├── index.js
│ └── prod.env.js
├── index.html
├── package.json
├── src/
│ ├── App.vue
│ ├── api/
│ │ ├── api.js
│ │ └── index.js
│ ├── main.js
│ ├── router/
│ │ └── index.js
│ ├── store/
│ │ └── index.js
│ ├── utils/
│ │ └── core.js
│ └── views/
│ ├── index.vue
│ └── passport/
│ ├── login.vue
│ └── signin.vue
└── static/
├── .gitkeep
└── css/
└── style.css
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
.DS_Store
node_modules/
dist/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Editor directories and files
.idea
*.suo
*.ntvs*
*.njsproj
*.sln
migrations/
config.py*
================================================
FILE: README.md
================================================
## flask + Vue + Vuex + iview => 前后端分离
### 提供一个可以复用的 用户注册登录,Token验证,session/cookie 登录的 模板
#### 已完成
- [x] 用户注册与登录
- [x] 关联QQ邮箱,注册时发送验证码邮件
- [x] 登录成功后获取token并缓存在本地
- [x] 用户登出,销毁Token
#### Todo
- [ ] Session/Cookie 保持会话
- [ ] 用户新登录时需要填写验证码,验证码图片由后台Python生成并缓存到Redis,图片显示于前端,登录时前端数据与数据库数据校验
### 现有的特性
* 用户密码两次加密,前后端各加密一次
* 利用flask_mail多线程发送邮箱
* 邮箱验证码缓存在Redis中
------------------------------------------------------------
#### 展示
* 登录页

* 注册页

* QQ邮箱

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