def login_vaild(request): email = request.POST['email'].strip() vaild_code = request.POST['vaild'].strip() if not all((email, vaild_code)): info = {'state': 1, 'msg': '用户名或验证码不能为空!'} return HttpResponse(json.dumps(info, ensure_ascii=False), content_type='application/json', charset='utf-8') if not code_.valid_code(email, vaild_code): info = {'state': 1, 'msg': '验证码输入错误!'} return HttpResponse(json.dumps(info, ensure_ascii=False), content_type='application/json', charset='utf-8') login_user = TUser.objects.filter(email=email).first() if login_user: token = token_.gen_token(login_user.user_id) cache_.add_token(token, login_user.user_id) head_url = 'http://localhost:8000/static/天空.jpg' if login_user.img: head_url = login_user.img nickname = '昵称' if login_user.nickname: nickname = login_user.nickname info = {'state': 0, 'msg': '登录成功!', 'token': token, 'head_url': head_url, 'nickname': nickname} return HttpResponse(json.dumps(info, ensure_ascii=False), content_type='application/json', charset='utf-8') else: info = {'state': 1, 'msg': '该用户未注册!'} return HttpResponse(json.dumps(info, ensure_ascii=False), content_type='application/json', charset='utf-8')
def login(): resp = validate_json() if resp: return resp resp = validate_params('phone', 'pwd') if resp: return resp data = request.get_json() try: user = session.query(User).filter(User.phone == data['phone'], User.pwd == data['pwd']).one() token = token_.gen_token(user.u_id) cache_.add_token(token, user.u_id) resp: Response = jsonify({'state': 0, 'msg': '登录成功', 'token': token}) # 设置响应对象的cookie,向客户端响应cookie resp.set_cookie('token', token) return resp except: pass return jsonify({ 'state': 4, 'msg': '用户名或口令输入错误', })
def regist(): # 要求JSON数据格式: valid_fields = {"name", "phone", "code", "auth_str"} data = request.get_json() # 获取上传的json数据 if data is None: return jsonify({'state': 4, 'msg': '必须提供json格式的参数'}) # 验证参数的完整性 if set(data.keys()) == valid_fields: # 验证输入的验证码是否正确 if not code_.valid_code(data['phone'], data['code']): return jsonify({'state': 2, 'msg': '验证码输入错误,请确认输入的验证码'}) user = TUser() user.name = data.get('name') user.phone = data.get('phone') user.auth_string = data.get('auth_str') user.create_time = datetime.now() session.add(user) session.commit() # 向前端返回信息中,包含一个与用户匹配的token(有效时间为一周) # 1. 基于uuid+user_id生成token # 2. 将token和user_id保存到缓存(cache_.save_token(token, user_id)) # JWT 单点授权登录 token = token_.gen_token(user.user_id) cache_.add_token(token, user.user_id) else: return jsonify({'state': 1, 'msg': '参数不完速,详情请查看接口文档'}) return jsonify({'state': 0, 'msg': '注册并登录成功', 'token': token})
def login(): resp = validate_json() if resp: return resp resp = validate_params('phone', 'auth_str') if resp: return resp data = request.get_json() try: user = session.query(TUser).filter( or_(TUser.phone == data['phone'], TUser.name == data['phone']), TUser.auth_string == data['auth_str']).one() token = token_.gen_token(user.user_id) cache_.add_token(token, user.user_id) head_url = '' if user.head: head_url = cache_.get_head_url(user.head) if not head_url: head_url = oss_.get_oss_img_url(user.head) cache_.save_head_url(user.head, head_url) resp: Response = jsonify({ 'state': 0, 'msg': '登录成功', 'token': token, 'head': head_url }) # 设置响应对象的cookie,向客户端响应cookie resp.set_cookie('token', token) resp.set_cookie('head', head_url) return resp except Exception as e: print(e) return jsonify({ 'state': 4, 'msg': '用户名或口令输入错误', })
def login_pwd(request): email = request.POST['email'].strip() password = request.POST['password'].strip() if not all((email, password)): info = {'state': 1, 'msg': '用户名或口令不能为空!'} return HttpResponse(json.dumps(info, ensure_ascii=False), content_type='application/json', charset='utf-8') password_ = md5_.hash_encode(password) login_user = TUser.objects.filter(email=email, password=password_).first() if login_user: token = token_.gen_token(login_user.user_id) cache_.add_token(token, login_user.user_id) head_url = 'http://localhost:8000/static/天空.jpg' if login_user.img: head_url = login_user.img nickname = '昵称' if login_user.nickname: nickname = login_user.nickname info = {'state': 0, 'msg': '登录成功!', 'token': token, 'head_url': head_url, 'nickname': nickname} return HttpResponse(json.dumps(info, ensure_ascii=False), content_type='application/json', charset='utf-8') else: info = {'state': 1, 'msg': '用户名或口令错误!'} return HttpResponse(json.dumps(info, ensure_ascii=False), content_type='application/json', charset='utf-8')
def register(request): email = request.POST['email'].strip() vaild_code = request.POST['vaild'].strip() if not all((email, vaild_code)): info = {'state': 1, 'msg': '用户名或验证码不能为空!'} return HttpResponse(json.dumps(info, ensure_ascii=False), content_type='application/json', charset='utf-8') if not code_.valid_code(email, vaild_code): info = {'state': 1, 'msg': '验证码输入错误!'} return HttpResponse(json.dumps(info, ensure_ascii=False), content_type='application/json', charset='utf-8') # if vaild_code != '0000': # info = {'state': 1, 'msg': '验证码输入错误!'} # return HttpResponse(json.dumps(info, ensure_ascii=False), content_type='application/json', charset='utf-8') user = TUser() user.email = email token = token_.gen_token(user.user_id) user.save() print(token, user.email) cache_.add_token(token, user.user_id) head_url = 'http://localhost:8000/static/天空.jpg' nickname = '昵称' info = {'state': 0, 'msg': '登录成功!', 'token': token, 'head_url': head_url, 'nickname': nickname} return HttpResponse(json.dumps(info, ensure_ascii=False), content_type='application/json', charset='utf-8')