def ajax_validate(): gt = GeetestLib(captcha_id, private_key) challenge = request.form[gt.FN_CHALLENGE] validate = request.form[gt.FN_VALIDATE] seccode = request.form[gt.FN_SECCODE] status = session[gt.GT_STATUS_SESSION_KEY] if status: result = gt.success_validate(challenge, validate, seccode) else: result = gt.failback_validate(challenge, validate, seccode) return result
def validate_captcha(request): if request.is_ajax: gt = GeetestLib(settings.CAPTCHA_PUB, settings.CAPTCHA_PRI) status = request.session[gt.GT_STATUS_SESSION_KEY] challenge = request.POST['challenge'] validate = request.POST['validate'] seccode = request.POST['seccode'] if status: result = gt.success_validate(challenge, validate, seccode) else: result = gt.failback_validate(challenge, validate, seccode) return OKAY if result else FAIL return ERROR
def pc_validate_captcha(): gt = GeetestLib(pc_geetest_id, pc_geetest_key) challenge = request.form[gt.FN_CHALLENGE] validate = request.form[gt.FN_VALIDATE] seccode = request.form[gt.FN_SECCODE] status = session[gt.GT_STATUS_SESSION_KEY] user_id = session["user_id"] if status: result = gt.success_validate(challenge, validate, seccode, user_id) else: result = gt.failback_validate(challenge, validate, seccode) result = "<html><body><h1>登录成功</h1></body></html>" if result else "<html><body><h1>登录失败</h1></body></html>" return result
def validate_capthca(request): gt = GeetestLib(settings.GEETEST_CAPTCHAID, settings.GEETEST_PRIVATEKEY) status = request.session[gt.GT_STATUS_SESSION_KEY] challenge = request.POST[gt.FN_CHALLENGE] validate = request.POST[gt.FN_VALIDATE] seccode = request.POST[gt.FN_SECCODE] if status: result = gt.success_validate(challenge, validate, seccode) else: result = gt.failback_validate(challenge, validate, seccode) request.session['isValidated'] = result result = stateCode.SUCCESS if result else stateCode.ERROR return JsonResponse({'state': result, 'info': _('validate failed')})
def mobile_ajax_validate(): gt = GeetestLib(mobile_geetest_id,mobile_geetest_key) challenge = request.form[gt.FN_CHALLENGE] validate = request.form[gt.FN_VALIDATE] seccode = request.form[gt.FN_SECCODE] status = session[gt.GT_STATUS_SESSION_KEY] user_id = session["user_id"] if status: result = gt.success_validate(challenge, validate, seccode, user_id,data='',userinfo='') else: result = gt.failback_validate(challenge, validate, seccode) result = {"status":"success"} if result else {"status":"fail"} return json.dumps(result)
def validate_capthca(): gt = GeetestLib(captcha_id, private_key) challenge = request.form[gt.FN_CHALLENGE] validate = request.form[gt.FN_VALIDATE] seccode = request.form[gt.FN_SECCODE] status = session[gt.GT_STATUS_SESSION_KEY] user_id = session["user_id"] if status: result = gt.success_validate(challenge, validate, seccode, user_id) else: result = gt.failback_validate(challenge, validate, seccode) result = "success" if result else "fail" return result
def post(self): gt = GeetestLib(mobile_geetest_id, mobile_geetest_key) challenge = self.get_argument(gt.FN_CHALLENGE, "") validate = self.get_argument(gt.FN_VALIDATE, "") seccode = self.get_argument(gt.FN_SECCODE, "") status = self.session[gt.GT_STATUS_SESSION_KEY] user_id = self.session["user_id"] if status: result = gt.success_validate(challenge, validate, seccode, user_id) else: result = gt.failback_validate(challenge, validate, seccode) self.session["user_id"] = user_id result = result = {"status":"success"} if result else {"status":"fail"} self.write(json.dumps(result))
def post(self): gt = GeetestLib(pc_geetest_id, pc_geetest_key) challenge = self.get_argument(gt.FN_CHALLENGE, "") validate = self.get_argument(gt.FN_VALIDATE, "") seccode = self.get_argument(gt.FN_SECCODE, "") status = self.session[gt.GT_STATUS_SESSION_KEY] user_id = self.session["user_id"] if status: result = gt.success_validate(challenge, validate, seccode, user_id) else: result = gt.failback_validate(challenge, validate, seccode) self.session["user_id"] = user_id result = "<html><body><h1>登录成功</h1></body></html>" if result else "<html><body><h1>登录失败</h1></body></html>" self.write(result)
def validate(request): if request.method == "POST": gt = GeetestLib(captcha_id, private_key) challenge = request.POST.get(gt.FN_CHALLENGE, '') validate = request.POST.get(gt.FN_VALIDATE, '') seccode = request.POST.get(gt.FN_SECCODE, '') status = request.session[gt.GT_STATUS_SESSION_KEY] user_id = request.session["user_id"] if status: result = gt.success_validate(challenge, validate, seccode, user_id) else: result = gt.failback_validate(challenge, validate, seccode) result = "<html><body><h1>登录成功</h1></body></html>" if result else "<html><body><h1>登录失败</h1></body></html>" return HttpResponse(result) return HttpResponse("error")
def ajax_validate(request): if request.method == "POST": gt = GeetestLib(captcha_id, private_key) challenge = request.POST.get(gt.FN_CHALLENGE, '') validate = request.POST.get(gt.FN_VALIDATE, '') seccode = request.POST.get(gt.FN_SECCODE, '') status = request.session[gt.GT_STATUS_SESSION_KEY] user_id = request.session["user_id"] if status: result = gt.success_validate(challenge, validate, seccode, user_id) else: result = gt.failback_validate(challenge, validate, seccode) result = {"status":"success"} if result else {"status":"fail"} return HttpResponse(json.dumps(result)) return HttpResponse("error")
def login(request): """ # 登录视图 :param request: :return: """ # if request.is_ajax(): # 如果是AJAX请求 if request.method == "POST": # 初始化一个给AJAX返回的数据 ret = {"status": 0, "msg": ""} # 从提交过来的数据中 取到用户名和密码 username = request.POST.get("username") pwd = request.POST.get("password") # 获取极验 滑动验证码相关的参数 gt = GeetestLib(pc_geetest_id, pc_geetest_key) challenge = request.POST.get(gt.FN_CHALLENGE, '') validate = request.POST.get(gt.FN_VALIDATE, '') seccode = request.POST.get(gt.FN_SECCODE, '') status = request.session[gt.GT_STATUS_SESSION_KEY] user_id = request.session["user_id"] if status: result = gt.success_validate(challenge, validate, seccode, user_id) else: result = gt.failback_validate(challenge, validate, seccode) if result: # 验证码正确 # 利用auth模块做用户名和密码的校验 user = auth.authenticate(username=username, password=pwd) if user: # 用户名密码正确 # 给用户做登录 auth.login(request, user) ret["msg"] = "/index/" else: # 用户名密码错误 ret["status"] = 1 ret["msg"] = "用户名或密码错误!" else: ret["status"] = 1 ret["msg"] = "验证码错误" print(ret) return JsonResponse(ret) return render(request, "login2.html")
def post(self): gt = GeetestLib(mobile_geetest_id, mobile_geetest_key) challenge = self.get_argument(gt.FN_CHALLENGE, "") validate = self.get_argument(gt.FN_VALIDATE, "") seccode = self.get_argument(gt.FN_SECCODE, "") status = self.session[gt.GT_STATUS_SESSION_KEY] user_id = self.session["user_id"] if status: result = gt.success_validate(challenge, validate, seccode, user_id) else: result = gt.failback_validate(challenge, validate, seccode) self.session["user_id"] = user_id result = result = { "status": "success" } if result else { "status": "fail" } self.write(json.dumps(result))
def geetest_post_validate(request): gt = GeetestLib(settings.GEETEST_ID, settings.GEETEST_KEY) challenge = request.POST.get(gt.FN_CHALLENGE, '') validate = request.POST.get(gt.FN_VALIDATE, '') seccode = request.POST.get(gt.FN_SECCODE, '') status = request.session[gt.GT_STATUS_SESSION_KEY] if status: result = gt.success_validate(challenge, validate, seccode) else: result = gt.failback_validate(challenge, validate, seccode) return result # f**k check permission # if request.user.is_authenticated(): # 针对已经登录验证的用户 # else: # 对匿名用户
def mobile_ajax_validate(): gt = GeetestLib(mobile_geetest_id, mobile_geetest_key) challenge = request.form[gt.FN_CHALLENGE] validate = request.form[gt.FN_VALIDATE] seccode = request.form[gt.FN_SECCODE] status = session[gt.GT_STATUS_SESSION_KEY] user_id = session["user_id"] if status: result = gt.success_validate(challenge, validate, seccode, user_id, data='', userinfo='') else: result = gt.failback_validate(challenge, validate, seccode) result = {"status": "success"} if result else {"status": "fail"} return json.dumps(result)
def login(request): """ 处理登录接口,使用极验滑动验证码登陆 :param request: :return: """ if request.method == "POST": ret = {"statys": 0, "msg": ""} username = request.POST.get("username") password = request.POST.get("password") # 获取极验 极验验证码相关的参数 gt = GeetestLib(pc_geetest_id, pc_geetest_key) challenge = request.POST.get(gt.FN_CHALLENGE, '') validate = request.POST.get(gt.FN_VALIDATE, '') seccode = request.POST.get(gt.FN_SECCODE, '') status = request.session[gt.GT_STATUS_SESSION_KEY] user_id = request.session["user_id"] valid_code = request.POST.get("valid_code") print(valid_code) print("用户输入的验证码".center(120, "=")) if status: result = gt.success_validate(challenge, validate, seccode, user_id) else: result = gt.failback_validate(challenge, validate, seccode) if result: user = auth.authenticate(username=username, password=password) if user: auth.login(request, user) ret["msg"] = "/blog/" else: ret["status"] = 1 ret["msg"] = "用户名或密码错误" else: ret["status"] = 1 ret["msg"] = "验证码错误" return JsonResponse(ret) return render(request, "blog/login.html")
def login(request): # 如果是post方法 if request.method == "POST": ret = {"status": 0, "msg": ""} # 初始化一个给AJAX返回的数据 username = request.POST.get("username") password = request.POST.get("password") # 获取极验,滑动验证码相关参数 gt = GeetestLib(pc_geetest_id, pc_geetest_key) challenge = request.POST.get(gt.FN_CHALLENGE, '') validate = request.POST.get(gt.FN_VALIDATE, '') seccode = request.POST.get(gt.FN_SECCODE, '') status = request.session[gt.GT_STATUS_SESSION_KEY] user_id = request.session["user_id"] if status: result = gt.success_validate(challenge, validate, seccode, user_id) else: result = gt.failback_validate(challenge, validate, seccode) if result: # 验证码正确 # 利用auth模块做用户名和密码的校验 user = auth.authenticate(username=username, password=password) response = HttpResponse() if user: auth.login(request, user) # 将登陆用户注入request.user ret["msg"] = "/index/" else: # 用户名密码错误 ret["status"] = 1 ret["msg"] = "用户名或密码错误!" else: ret["status"] = 2 ret["msg"] = "验证码错误" return JsonResponse(ret) # 如果是get方法 else: if 'login' in request.COOKIES: login = request.get_signed_cookie('login', salt='hello').split(',') username = login[0] password = login[1] return render(request, "login.html", { "username": username, "password": password }) return render(request, "login.html")
def post(self): try: gt = GeetestLib(GT_ID, GT_KEY) challenge = self.get_argument(gt.FN_CHALLENGE, "") validate = self.get_argument(gt.FN_VALIDATE, "") seccode = self.get_argument(gt.FN_SECCODE, "") status = int(self.session[gt.GT_STATUS_SESSION_KEY]) user_id = self.session["user_id"] if status: verify_res = gt.success_validate(challenge, validate, seccode, user_id) else: verify_res = gt.failback_validate(challenge, validate, seccode) self.session["user_id"] = user_id if verify_res: email = self.get_argument("email") password = self.get_argument("password") if email and password: password = make_password(password) student_coll = BaseMotor().client[MongoBasicInfoDb][STUDENTS] stu_doc = yield student_coll.find_one({"user_email": email}) if not stu_doc: msg = '账户不存在,请重新输入或前往注册!' self.render("front/front_signin.html", msg=msg,action_url = '/signin') else: pwd = stu_doc['password'] if password == pwd: self.session['current_email'] = stu_doc['user_email'] self.session['role'] = stu_doc['role'] self.session['username'] = stu_doc['user_name'] if stu_doc['user_name'] != '' else stu_doc['user_email'] self.redirect("/") else: msg = '密码错误,请重新输入!' self.render("front/front_signin.html", msg=msg, action_url='/signin') else: msg = '邮箱或密码值获取错误,请重新输入!' self.render("front/front_signin.html", msg=msg ,action_url = '/signin') else: msg = '验证码验证失败,请重新验证!' self.render("front/front_signin.html",msg=msg ,action_url = '/signin') except Exception as e: print e logging.exception(e) self.render("front/front_signin.html", msg=e,action_url = '/signin')
def login(request): if request.method == "POST": # 初始化一个字典用于给ajax请求返回数据 ret = {'status': 0, 'msg': ''} # 从请求中获取到用户名和密码 username = request.POST.get('username') password = request.POST.get('password') # 获取极验活动验证码相关参数 gt = GeetestLib(settings.PC_GEETEST_ID, settings.PC_GEETEST_KEY) challenge = request.POST.get(gt.FN_CHALLENGE, '') validate = request.POST.get(gt.FN_VALIDATE, '') seccode = request.POST.get(gt.FN_SECCODE, '') status = request.session[gt.GT_STATUS_SESSION_KEY] user_id = request.session["user_id"] if status: result = gt.success_validate(challenge, validate, seccode, user_id) else: result = gt.failback_validate(challenge, validate, seccode) if result: # 如果极验返回的这个result是有内容的,说明验证码验证成功,接下来验证用户个人账号信息 user = models.User.objects.filter(username=username, password=busybox.get_rand_str(password)).first() if user: # 用户名密码正确,给用户做登录,将用户的session信息保存到django_session信息中(其实就是数据库中) request.session['user'] = { 'userid': user.uid, 'name': user.username, 'nickname': user.nickname, } # 设置完session以后让用户redirect到根目录 ret['msg'] = "/" else: # 当查不到这个用户的时候基本就是用户名或者密码错误了。 ret['status'] = 1 ret['msg'] = "用户名或密码错误" else: # 如果验证码验证失败,那么返回错误信息 ret['status'] = 1 ret['msg'] = '验证码错误' return JsonResponse(ret)
def validate_capthca(): session['vote'] = 0 gt = GeetestLib(captcha_id, private_key) challenge = request.form[gt.FN_CHALLENGE] validate = request.form[gt.FN_VALIDATE] seccode = request.form[gt.FN_SECCODE] status = session[gt.GT_STATUS_SESSION_KEY] user_id = session["user_id"] session['refer'] = request.referrer if status: result = gt.success_validate(challenge, validate, seccode, user_id) else: result = gt.failback_validate(challenge, validate, seccode) result = "success" if result else "fail" if result == "success": session['vote'] = 1 return redirect(session['refer']) else: flash("验证码错误!") return redirect(session['refer'])
def validate_capthca(): session['vote'] = 0 gt = GeetestLib(captcha_id, private_key) challenge = request.form[gt.FN_CHALLENGE] validate = request.form[gt.FN_VALIDATE] seccode = request.form[gt.FN_SECCODE] status = session[gt.GT_STATUS_SESSION_KEY] user_id = session["user_id"] session['refer'] = request.referrer if status: result = gt.success_validate(challenge, validate, seccode, user_id) else: result = gt.failback_validate(challenge, validate, seccode) result = "success" if result else "fail" if result == "success": session['vote'] = 1 return redirect(session['refer']) else: flash("验证码错误!") return redirect(session['refer'])
def _ajax_validate_captcha(request): gt = GeetestLib(captcha_id, private_key) form = load_resp(request.body, GeeForm) if form is None: return HttpResponseBadRequest(json.dumps({"message": "Bad request"})) if not form.is_valid(): return HttpResponseBadRequest( json.dumps({"message": form.errors.as_json()})) status = request.session[gt.GT_STATUS_SESSION_KEY] user_id = request.session[GEETEST_UID_NAME] challenge = form.cleaned_data[gt.FN_CHALLENGE] validate = form.cleaned_data[gt.FN_VALIDATE] seccode = form.cleaned_data[gt.FN_SECCODE] if status: result = gt.success_validate(challenge, validate, seccode, user_id) else: result = gt.failback_validate(challenge, validate, seccode) if result: set_geetest_passed(request) return HttpResponse(json.dumps({"message": "成功"})) return HttpResponseBadRequest(json.dumps({"message": "验证码错误"}))
def login(request): if request.method == 'GET': return render(request, 'login.html') else: gt = GeetestLib(pc_geetest_id, pc_geetest_key) challenge = request.POST.get(gt.FN_CHALLENGE, '') validate = request.POST.get(gt.FN_VALIDATE, '') seccode = request.POST.get(gt.FN_SECCODE, '') status = request.session[gt.GT_STATUS_SESSION_KEY] u = request.POST.get('username') pwd = request.POST.get('password') user = authenticate(username=u, password=pwd) if status: result = gt.success_validate(challenge, validate, seccode) else: result = gt.failback_validate(challenge, validate, seccode) if user: auth.login(request, user) #将登录赋值给user return redirect('index.html') else: return render(request, 'login.html', {'msg': '用户名或密码错误'})
def index(): global updata_time, all_count, valid_count, spider_status_list if request.method == 'POST': gt = GeetestLib(geetest_id, geetest_key) challenge = request.form[gt.FN_CHALLENGE] validate = request.form[gt.FN_VALIDATE] seccode = request.form[gt.FN_SECCODE] status = session[gt.GT_STATUS_SESSION_KEY] user_id = session["user_id"] #获取数据 url = request.values.get('url') name = request.values.get('name') type = request.values.get('type') if status: result = gt.success_validate(challenge, validate, seccode, user_id) else: result = gt.failback_validate(challenge, validate, seccode) if result: #成功验证 if not name: #生成随机6位 pool = string.ascii_letters + string.digits key = [] key = random.sample(pool, 6) keys = "".join(key) name = keys check = filter(url, name, type) if '通过检查' in check: info = short_url(url, name, type) if '成功' in info: return jsonify({"code": 200, "info": name}) else: return jsonify({"code": 403, "info": info}) else: return jsonify({"code": 403, "info": check}) else: return jsonify({"code": 403, "info": "滑动验证未通过"}) else: return render_template('index.html')
def login(request): # if request.is_ajax(): # 如果是AJAX请求 if request.method == "POST": # 初始化一个给AJAX返回的数据 ret = {"status": 0, "msg": ""} username = request.POST.get('username') password = request.POST.get('password') gt = GeetestLib(pc_geetest_id, pc_geetest_key) challenge = request.POST.get(gt.FN_CHALLENGE, '') validate = request.POST.get(gt.FN_VALIDATE, '') seccode = request.POST.get(gt.FN_SECCODE, '') status = request.session[gt.GT_STATUS_SESSION_KEY] user_id = request.session["user_id"] if status: result = gt.success_validate(challenge, validate, seccode, user_id) else: result = gt.failback_validate(challenge, validate, seccode) if result: # 验证码正确 # 利用auth模块做用户名和密码的校验 user = auth.authenticate(request, username=username, password=password) if user: # 用户名密码正确 # 登录 auth.login(request, user) ret['msg'] = '/index/' else: # 用户名密码错误 ret["status"] = 1 ret['msg'] = "用户名或密码错误" else: # 验证码不正确 ret["status"] = 1 ret['msg'] = "验证码错误" return JsonResponse(ret) return render(request, 'login2.html')
def login(request): # next_url = request.GET.get('next', None) # print(next_url) # next = '<input type="text" id="next" name="next" style="display: none" value=%s>' % next_url if request.method == 'POST': # 初始化一个给AJAX返回的数据 默认返回错误响应 ret = {'status': -1, 'msg': None} username = request.POST.get('username') password = request.POST.get('password') next = request.GET.get('next') # 获取极验 滑动验证码相关的参数 gt = GeetestLib(pc_geetest_id, pc_geetest_key) challenge = request.POST.get(gt.FN_CHALLENGE, '') validate = request.POST.get(gt.FN_VALIDATE, '') seccode = request.POST.get(gt.FN_SECCODE, '') status = request.session[gt.GT_STATUS_SESSION_KEY] user_id = request.session['user_id'] if status: result = gt.success_validate(challenge, validate, seccode, user_id) else: result = gt.failback_validate(challenge, validate, seccode) if result: # 验证码通过 # 使用auth模块认证 user_obj = auth.authenticate(username=username, password=password) if user_obj: auth.login(request, user_obj) ret['status'] = '0' ret['msg'] = next if next else '/%s/' % request.user.blog.site else: # 用户名不存在或密码错误 ret['msg'] = '用户名不存在或密码错误' else: ret['status'] = -2 ret['msg'] = '验证码错误' return JsonResponse(ret) return render(request, 'login.html')
def login(request): #if request is ajax #如果是ajax请求 # if request.method =="POST": if request.is_ajax(): #初始化一个给AJAX返回的数据 Ajax请求返回一个字典 ret = {"status": 0, "msg": ""} #从提交过来的数中 取到用户名和密码 username = request.POST.get('username') pwd = request.POST.get("password") #获取极验验证码验证的相关参数 gt = GeetestLib(pc_geetest_id, pc_geetest_key) challenge = request.POST.get(gt.FN_CHALLENGE, '') validate = request.POST.get(gt.FN_VALIDATE, '') seccode = request.POST.get(gt.FN_SECCODE, '') status = request.session[gt.GT_STATUS_SESSION_KEY] user_id = request.session["user_id"] if status: result = gt.success_validate(challenge, validate, seccode, user_id) else: result = gt.failback_validate(challenge, validate, seccode) if result: user = auth.authenticate(username=username, password=pwd) if user: auth.login(request, user) #将user赋值给request ret['status'] = username ret['msg'] = "/index/" else: ret['msg'] = "用户名或密码错误!" else: ret['msg'] = "验证码错误" return JsonResponse(ret) else: return render(request, "login2.html")
def login(request): back_msg = {'user': None, 'msg': None} if request.is_ajax(): name = request.POST.get('username') pwd = request.POST.get('password') gt = GeetestLib(pc_geetest_id, pc_geetest_key) challenge = request.POST.get(gt.FN_CHALLENGE, '') validate = request.POST.get(gt.FN_VALIDATE, '') seccode = request.POST.get(gt.FN_SECCODE, '') status = request.session[gt.GT_STATUS_SESSION_KEY] user_id = request.session["user_id"] # code = request.POST.get('code') # if code.upper() == request.session['code'].upper(): user = auth.authenticate(request, username=name, password=pwd) # user=models.UserInfo.objects.filter(username=ss,password=33).first() if status: result = gt.success_validate(challenge, validate, seccode, user_id) else: result = gt.failback_validate(challenge, validate, seccode) if result: # 在auth模块注册 print(user) if user: auth.login(request, user) back_msg['user'] = name back_msg['msg'] = '/index/' # data=json.dumps(back_msg) return JsonResponse(back_msg) else: back_msg['msg'] = '用户名或密码错误' return JsonResponse(back_msg) # else: # back_msg['msg'] = '验证码错误' # return JsonResponse(back_msg) return render(request, 'login.html')
def login(request): # if request.is_ajax(): # 如果是AJAX請求 if request.method == "POST": # 初始化一個給AJAX返回的數據 ret = {"status": 0, "msg": ""} username = request.POST.get("username") pwd = request.POST.get("password") # 獲取極驗 滑動驗證碼相關的參數 gt = GeetestLib(pc_geetest_id, pc_geetest_key) challenge = request.POST.get(gt.FN_CHALLENGE, '') validate = request.POST.get(gt.FN_VALIDATE, '') seccode = request.POST.get(gt.FN_SECCODE, '') status = request.session[gt.GT_STATUS_SESSION_KEY] user_id = request.session["user_id"] if status: result = gt.success_validate(challenge, validate, seccode, user_id) else: result = gt.failback_validate(challenge, validate, seccode) if result: # 驗證碼正確 # 利用auth模塊做驗證碼和密碼的校驗 user = auth.authenticate(username=username, password=pwd) if user: # 用戶名和密碼正確 # 給用戶做登錄 auth.login(request, user) # 將登錄用戶賦值給 request.user ret["msg"] = "/index/" else: # 用戶名或密碼錯誤 ret["status"] = 1 ret["msg"] = "用戶名或密碼錯誤!" else: ret["status"] = 1 ret["msg"] = "驗證碼錯誤!" return JsonResponse(ret) return render(request, "login2.html")
def post(self, request): back_dic = {'code': 100, 'msg': ''} # 从客户端拿数据 username = request.POST.get('username') # 从正确数据中获得用户名 # request.POST.get('username') # 或者从request.POST中获得姓名 password = request.POST.get('password') # 获取极验滑动验证码相关的参数 gt = GeetestLib(pc_geetest_id, pc_geetest_key) challenge = request.POST.get(gt.FN_CHALLENGE, '') validate = request.POST.get(gt.FN_VALIDATE, '') seccode = request.POST.get(gt.FN_SECCODE, '') status = request.session[gt.GT_STATUS_SESSION_KEY] user_id = request.session["user_id"] if status: result = gt.success_validate(challenge, validate, seccode, user_id) else: result = gt.failback_validate(challenge, validate, seccode) if result: user_obj = auth.authenticate(username=username, password=password) if user_obj: # 登录成功就记录当前登录状态 auth.login(request, user_obj) log = Userlog() log.ip = request.META['REMOTE_ADDR'] log.user = request.user log.add_time = datetime.utcnow() log.save() back_dic['msg'] = "登录成功" back_dic['url'] = '/index/' else: back_dic['code'] = 101 back_dic['msg'] = "用户名或密码错误" else: back_dic['code'] = 102 back_dic['msg'] = "验证码错误" return JsonResponse(back_dic)
def validate_capthca(): if request.method == "POST": gt = GeetestLib(captcha_id, private_key) challenge = request.form[gt.FN_CHALLENGE] validate = request.form[gt.FN_VALIDATE] seccode = request.form[gt.FN_SECCODE] status = session[gt.GT_STATUS_SESSION_KEY] user_id = session.get("user_id", None) if status: result = gt.success_validate(challenge, validate, seccode, user_id) else: result = gt.failback_validate(challenge, validate, seccode) if result: # 验证安全,完成登录 _user = redis_store.get("pre_login") if _user: session["logged_in"] = _user # 验证安全,完成添加留言 _body = redis_store.hgetall("pre_add_msg") if _body: title = _body.get("title") message = _body.get("message") user = User.query.filter_by( username=session["logged_in"]).first() msg = Message(title=title, body=message, user=user) db.session.add(msg) db.session.commit() return redirect("/") else: return redirect("/login") return render_template("validate.html")
def login(request): # 初始化一个给AJAX返回的数据 ret = {"status": 0, "msg": ""} if request.method == "POST": next = request.POST.get("next") print(next) user = request.POST.get("username") pwd = request.POST.get("password") # 获取极验 验证码相关的参数 gt = GeetestLib(pc_geetest_id, pc_geetest_key) challenge = request.POST.get(gt.FN_CHALLENGE, '') validate = request.POST.get(gt.FN_VALIDATE, '') seccode = request.POST.get(gt.FN_SECCODE, '') status = request.session[gt.GT_STATUS_SESSION_KEY] user_id = request.session["user_id"] if status: result = gt.success_validate(challenge, validate, seccode, user_id) else: result = gt.failback_validate(challenge, validate, seccode) if result: # 判断用户名密码是否正确 user = auth.authenticate(username=user, password=pwd) if user: # 将登陆的用户封装到request.user auth.login(request, user) if next: ret["msg"] = next else: ret["msg"] = "/index/" else: ret["status"] = 1 ret["msg"] = "用户名或密码错误" else: ret["status"] = 1 ret["msg"] = "验证码错误" return JsonResponse(ret) return render(request, "login.html")
def slide_login(request): login_obj = LoginForm() if request.method == "POST": res = {'code': 0} gt = GeetestLib(pc_geetest_id, pc_geetest_key) challenge = request.POST.get(gt.FN_CHALLENGE, '') validate = request.POST.get(gt.FN_VALIDATE, '') seccode = request.POST.get(gt.FN_SECCODE, '') status = request.session[gt.GT_STATUS_SESSION_KEY] user_id = request.session["user_id"] username = request.POST.get('username') pwd = request.POST.get('password') if status: result = gt.success_validate(challenge, validate, seccode, user_id) else: result = gt.failback_validate(challenge, validate, seccode) if result: user = auth.authenticate(username=username, password=pwd) login_obj = LoginForm(request.POST) login_obj.is_valid() if user: # 用户名和密码正确 auth.login(request, user) else: # 用户名和密码错误 res['code'] = 1 res['err_msg'] = '用户名或者密码错误' else: # 滑动验证码验证失败 res = {'code': 2} res = {'err_msg': '验证码不正确'} # result = {"status": "success"} if result else {"status": "fail"} return JsonResponse(res) return render(request, 'login.html', {'login_obj': login_obj})
def login(request): if request.method == "POST": # 初始化登录状态字典 ret = {'status': False, 'mes': None} # 获取极验所需验证信息 gt = GeetestLib(pc_geetest_id, pc_geetest_key) challenge = request.POST.get(gt.FN_CHALLENGE, '') validate = request.POST.get(gt.FN_VALIDATE, '') seccode = request.POST.get(gt.FN_SECCODE, '') status = request.session[gt.GT_STATUS_SESSION_KEY] user_id = request.session["user_id"] # 判断验证码是否正确 if status: result = gt.success_validate(challenge, validate, seccode, user_id) else: result = gt.failback_validate(challenge, validate, seccode) # 如果验证码正确,获取用户数据 if result: # print(request.POST.get('username')) # print(request.POST.get('userpass')) userinfo = myforms.Login(request.POST) # 通过校验 if userinfo.is_valid(): request.session['login_user_name'] = userinfo.cleaned_data[ 'username'] ret['status'] = True ret['mes'] = '/index/' else: ret['mes'] = userinfo.errors # print(ret) return HttpResponse(json.dumps(ret)) elif request.method == 'GET': form_obj = myforms.Login() return render(request, 'login.html', {'forms_obj': form_obj})
def post(self, request): res = BaseResponse() gt = GeetestLib(pc_geetest_id, pc_geetest_key) username = request.data.get("username", "") pwd = request.data.get("pwd", "") challenge = request.data.get("geetest_challenge", '') validate = request.data.get("geetest_validate", '') seccode = request.data.get("geetest_seccode", '') # status = request.session.get(gt.GT_STATUS_SESSION_KEY) status = 1 # user_id = request.session.get("user_id") user_id = "test" if status: result = gt.success_validate(challenge, validate, seccode, user_id) else: result = gt.failback_validate(challenge, validate, seccode) if result: user = Account.objects.filter(username=username, pwd=pwd).first() if not user: res.code = 1030 res.error = "用户名或密码错误" else: token = str(uuid.uuid4()).replace("-", "") try: conn = redis.Redis(connection_pool=POOL) # conn.set(token, user.id, ex=36000) conn.set(token, user.id) res.code = 1000 res.data = {"username": user.username, "token": token, "avatar": user.head_img} except Exception as e: res.code = 1033 res.error = "创建token失败,reason:" + str(e) else: res.code = 1001 res.error = "二次验证失败" return Response(res.dict)
def validate_capthca(): if request.method == "POST": gt = GeetestLib(captcha_id, private_key) challenge = request.form[gt.FN_CHALLENGE] validate = request.form[gt.FN_VALIDATE] seccode = request.form[gt.FN_SECCODE] status = session[gt.GT_STATUS_SESSION_KEY] user_id = session.get("user_id", None) if status: result = gt.success_validate(challenge, validate, seccode, user_id) else: result = gt.failback_validate(challenge, validate, seccode) if result: # 验证安全,完成登录 _user = redis_store.get("pre_login") if _user: session["logged_in"] = _user # 验证安全,完成添加留言 _body = redis_store.hgetall("pre_add_msg") if _body: title = _body.get("title") message = _body.get("message") user = User.query.filter_by(username = session["logged_in"]).first() msg = Message(title=title, body=message, user = user) db.session.add(msg) db.session.commit() return redirect("/") else: return redirect("/login") return render_template("validate.html")
def post(self, request): username = request.POST.get("username") pwd = request.POST.get("pwd") # 验证码验证 gt = GeetestLib(pc_geetest_id, pc_geetest_key) challenge = request.POST.get(gt.FN_CHALLENGE, '') validate = request.POST.get(gt.FN_VALIDATE, '') seccode = request.POST.get(gt.FN_SECCODE, '') status = request.session[gt.GT_STATUS_SESSION_KEY] user_id = request.session["user_id"] if status: result = gt.success_validate(challenge, validate, seccode, user_id) else: result = gt.failback_validate(challenge, validate, seccode) if result: if not all([username, pwd]): response = {"statu": 1, "err": "数据不完整"} return JsonResponse(response) user = authenticate(username=username, password=pwd) if not user: response = {"statu": 1, "err": "用户名或者密码错误"} return JsonResponse(response) li(request, user) user_id = request.user.id user = UserInfo.objects.get(id=user_id) roles = Role.objects.filter(userinfo=user) # <QuerySet [{'permission__url': '/', 'permission__group__id': 1, 'permission__operation': 'list'}]> permissions = roles.values("permission__url", "permission__group__id", "permission__operation").distinct() p = [] # 查询用户的所有权限并且注册到session中去 方案一 # for permission in permissions: # for k, v in permission.items(): # p.append(v) # request.session["permissions"] = p # 查询用户的所有权限并且注册到session中去 方案二 permission_dict = {} for permission in permissions: permission__group__id = permission["permission__group__id"] permission__url = permission["permission__url"] permission__operation = permission["permission__operation"] if permission__group__id not in permission_dict: permission_dict[permission__group__id] = { "url": [permission__url], "operation": [permission__operation] } else: print(permission__group__id) permission_dict[permission__group__id]["url"].append( permission__url) permission_dict[permission__group__id]["operation"].append( permission__operation) request.session["permission_dict"] = permission_dict next_url = request.GET.get("next", reverse("index")) response = {"statu": 0, "next_url": next_url} return JsonResponse(response) else: response = {"statu": 1, "err": "验证码错误"} return JsonResponse(response)
def post(self): next_url = self.get_argument('next', '/cms/') try: gt = GeetestLib(GT_ID, GT_KEY) challenge = self.get_argument(gt.FN_CHALLENGE, "") validate = self.get_argument(gt.FN_VALIDATE, "") seccode = self.get_argument(gt.FN_SECCODE, "") status = int(self.session[gt.GT_STATUS_SESSION_KEY]) user_id = self.session["user_id"] password = self.get_argument('password') password = make_password(password) if status: verify_res = gt.success_validate(challenge, validate, seccode, user_id) else: verify_res = gt.failback_validate(challenge, validate, seccode) self.session["user_id"] = user_id if verify_res: try: user_email = self.get_argument('user_email') cms_user_coll = BaseMotor( ).client[MongoBasicInfoDb][CMS_USER] cms_user_doc = yield cms_user_coll.find_one( {"_id": user_email}) if not cms_user_doc: self.render("cms/user_login.html", msg="账户不存在", next_url=next_url) else: pwd = cms_user_doc['password'] status = cms_user_doc['status'] if status == bool(False): self.render("cms/user_login.html", msg="此用户已被禁用", next_url=next_url) if pwd == password: self.session['current_email'] = user_email self.session['role'] = cms_user_doc['role'] self.session['permission'] = cms_user_doc[ 'permission'] self.session['username'] = cms_user_doc[ 'user_name'] self.set_secure_cookie("user", user_email + cms_user_doc['role'], expires_days=1) self.redirect(next_url) else: msg = "此账号密码有误,请重新输入!" self.render("cms/user_login.html", msg=msg, next_url=next_url) except Exception as e: logging.exception(e) msg = "账户出现异常!" self.render("cms/user_login.html", msg=msg, next_url=next_url) else: msg = '验证码验证失败,请重新验证' self.render("cms/user_login.html", msg=msg, next_url=next_url) except Exception as e: logging.exception(e) msg = '验证码参数获取异常,请稍后重试' self.render("cms/user_login.html", msg=msg, next_url=next_url)
# 读取用户 cookies 里面的 status 和 user_id # 是的,没有轮子可以用,只能自己造 cookies = {} for cookie in os.getenv('HTTP_COOKIE').split('; '): cookie = cookie.split('=') cookies[cookie[0]] = cookie[1] status = cookies[gt.GT_STATUS_SESSION_KEY] user_id = cookies['user_id'] # 通过状态判定极验服务器是否宕机,如果没有宕机,执行上面方案 # result:值为 1 或 0 # 1 表示验证成功,0 表示失败 if status: result = gt.success_validate(challenge, validate, seccode, user_id) else: result = gt.failback_validate(challenge, validate, seccode) # 断言(什么?你说给为什么不给玩家返回一个验证码错误的提示界面?) assert result == 1 # 标题获取 title = form['title'].value # 标签获取,因为可以为空,也可能是数组,判定较为复杂 tags = [] try: tags = form['inlineCheckbox'].value except AttributeError: for i in form['inlineCheckbox']: tags.append(i.value) except KeyError:
def admin_check(request): """ 检测登录返回状态 :param request: :return: """ # 账号 account = request.POST.get('username', None).strip() # 密码 pwd = request.POST.get('password', None).strip() # 极验 验证start gt = GeetestLib(settings.GEETEST['id'], settings.GEETEST['key']) challenge = request.POST.get(gt.FN_CHALLENGE, '') validate = request.POST.get(gt.FN_VALIDATE, '') seccode = request.POST.get(gt.FN_SECCODE, '') status = request.session[gt.GT_STATUS_SESSION_KEY] user_id = request.session["user_id"] if status: result = gt.success_validate(challenge, validate, seccode, user_id) else: result = gt.failback_validate(challenge, validate, seccode) # 极验 验证end # result: True验证通过,False 验证没有通过 if not result: return JsonResponse(lscommon.get_json_error('验证码错误', 1001)) # # 验证码 # code = request.POST.get('code').strip() # # 判断验证码是否存在 # if not code: # return '验证码不能为空!' # # 验证码是否输入正确 # if code.lower() != request.session.get('verifys').lower(): # return '验证码不正确,请重新输入!' # 账号 或者密码不能为空 if not account or not pwd: return JsonResponse(lscommon.get_json_error('账号或者密码不能为空!', 1002)) # 从数据库获取指定账号的信息 adminInfo = Admin.objects.filter(account=account).values('id', 'account', 'pwd', 'login_ip', 'login_num') if len(adminInfo) <= 0: return JsonResponse(lscommon.get_json_error('该账号不存在!', 1003)) # 对前台传递过来的密码进行hash pwd = settings.SALT + pwd + settings.SALT # 参与哈希运算 md5 = hashlib.md5() md5.update(pwd.encode('utf-8')) # 获取哈希后的密文 pwd = md5.hexdigest() # 验证密码是否正确 if adminInfo[0]['pwd'] != pwd: return JsonResponse(lscommon.get_json_error('密码错误!', 1004)) # 生成令牌的字符串 sign = settings.SALT + str(datetime.time()) + settings.SALT # 参与哈希运算 md5 = hashlib.md5() md5.update(sign.encode('utf-8')) # 获取哈希后的密文 access_token = md5.hexdigest() # 当用户登录成功时 要保存当前用户的身份令牌 admin = Admin.objects.get(id=adminInfo[0]['id']) admin.access_token = access_token admin.save() result = { "code": 0 , "msg": "登录成功" , "data": { "access_token": access_token } } return JsonResponse(result)