예제 #1
0
def login(request):
    next_url = request.GET.get('next', None)
    crypt = CryptPwd()
    if request.method == 'GET':
        if request.session.get('username') and request.session.get('lock'):
            del request.session['lock']
            del request.session['username']
        return render(request, 'login.html')
    elif request.method == 'POST':
        print('这是post请求')
        username = request.POST.get('username')
        password = request.POST.get('password')
        de_password = crypt.de_js_encrypt(password)
        login_ip = request.META.get('REMOTE_ADDR')
        # code = request.POST.get('code')
        remember_me = request.POST.get('remember_me')
        # if code.lower() != request.session.get('check_code', 'error').lower():
        #     return render(request, 'login.html', {"login_error_info": "验证码错误,请重新输入!"})
        user = auth.authenticate(username=username, password=de_password)
        print(user)
        if user and user.is_active:
            auth.login(request, user)
            request.session['username'] = username
            if remember_me:
                request.session.set_expiry(60 * 60 * 24 * 7)
            else:
                request.session.set_expiry(0)
            UserProfile.objects.filter(username=username).update(
                login_status=0)
            # get_login_info.delay(login_user=username, login_ip=login_ip, login_status='登录成功')
            print('未知1')
            if next_url:
                print('未知2')
                if next_url == '/' and not user.is_superuser:
                    return HttpResponseRedirect('/users/user_center/',
                                                locals())
                print('未知3')
                return HttpResponseRedirect(next_url, locals())
            else:
                print('未知4')
                return HttpResponseRedirect('/users/user_center/', locals())
        elif user is None:
            get_login_info.delay(login_user=username,
                                 login_ip=login_ip,
                                 login_status='登录失败')
            return render(request, 'login.html',
                          {"login_error_info": "输入的用户名或密码错误!"})
        elif not user.is_active:
            return render(request, 'login.html',
                          {"login_error_info": "账户被禁用!"})
        else:
            return render(request, 'login.html',
                          {"login_error_info": "未知异常,请联系管理员!"})
예제 #2
0
파일: views.py 프로젝트: shean023/ops
def lock_screen(request):
    crypt = CryptPwd()
    if request.method == 'GET':
        user = UserProfile.objects.get(username=request.user)
        UserProfile.objects.filter(username=request.user).update(
            login_status=3
        )
        request.session['lock'] = 'lock'
        if 'lock_screen' not in request.META.get('HTTP_REFERER'):
            request.session['referer_url'] = request.META.get('HTTP_REFERER')
        public_key = crypt.gen_pri_pub_key
        return render(request, 'lockscreen.html', locals())
    elif request.method == 'POST':
        de_password = crypt.de_js_encrypt(request.POST.get('pwd'))
        user = auth.authenticate(username=request.session['username'], password=de_password)
        if user:
            del request.session['lock']
            referer_url = request.session.get('referer_url')
            return redirect(referer_url)
        return render(request, 'lockscreen.html',
                      {"login_error_info": "密码错误!请确认输入的密码是否正确!", 'public_key': crypt.gen_pri_pub_key})