Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
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
Esempio n. 4
0
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')})
Esempio n. 5
0
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)
Esempio n. 6
0
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
Esempio n. 7
0
 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))
Esempio n. 8
0
 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)
Esempio n. 9
0
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")
Esempio n. 10
0
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")
Esempio n. 11
0
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")
Esempio n. 12
0
 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))
Esempio n. 13
0
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:
#     对匿名用户
Esempio n. 14
0
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)
Esempio n. 15
0
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")
Esempio n. 16
0
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')
Esempio n. 18
0
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)
Esempio n. 19
0
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'])
Esempio n. 20
0
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'])
Esempio n. 21
0
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": "验证码错误"}))
Esempio n. 22
0
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': '用户名或密码错误'})
Esempio n. 23
0
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')
Esempio n. 24
0
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')
Esempio n. 25
0
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')
Esempio n. 26
0
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")
Esempio n. 27
0
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')
Esempio n. 28
0
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")
Esempio n. 29
0
    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)
Esempio n. 30
0
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")
Esempio n. 31
0
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")
Esempio n. 32
0
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})
Esempio n. 33
0
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})
Esempio n. 34
0
 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)
Esempio n. 35
0
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")
Esempio n. 36
0
    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)
Esempio n. 37
0
 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)
Esempio n. 38
0
    # 读取用户 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:
Esempio n. 39
0
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)