提交 0b406b69 编写于 作者: baltery's avatar baltery

Add captch login using

上级 6f0cfd23
......@@ -303,3 +303,7 @@ BROKER_URL = 'redis://%(password)s%(host)s:%(port)s/3' % {
}
CELERY_RESULT_BACKEND = BROKER_URL
# Captcha settings, more see https://django-simple-captcha.readthedocs.io/en/latest/advanced.html
CAPTCHA_IMAGE_SIZE = (75, 33)
CAPTCHA_FOREGROUND_COLOR = '#001100'
......@@ -20,22 +20,14 @@ from django.views.generic.base import TemplateView
from django.http import HttpResponseRedirect
# def view(request, **kwargs):
# if kwargs:
# print kwargs
# return HttpResponseRedirect('/' + kwargs["module"] + '/' + kwargs["version"] + '/' + kwargs["api"])
urlpatterns = [
url(r'^captcha/', include('captcha.urls')),
url(r'^$', TemplateView.as_view(template_name='base.html'), name='index'),
url(r'^(api/)?users/', include('users.urls')),
url(r'^assets/', include('assets.urls')),
url(r'^terminal/', include('webterminal.urls')),
]
#urlpatterns += [
# url(r'^api/users/', include('users.api_urls')),
#]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
......
{{image}}{{hidden_field}}{{text_field}}
<script>
function refresh_captcha() {
$.getJSON("{% url "captcha-refresh" %}",
function (result) {
$('.captcha').attr('src', result['image_url']);
$('#id_captcha_0').val(result['key'])
})
}
$('.captcha').click(refresh_captcha)
</script>
\ No newline at end of file
<input id="{{id}}_0" name="{{name}}_0" type="hidden" value="{{key}}" />
{% load i18n %}
{% spaceless %}
{% if audio %}<a title="{% trans "Play CAPTCHA as audio file" %}" href="{{audio}}">{% endif %}<img src="{{image}}" alt="captcha" class="captcha" />{% if audio %}</a>{% endif %}
{% endspaceless %}
\ No newline at end of file
<div class="row">
<div class="col-sm-6">
<input autocomplete="off" id="{{id}}_1" class="form-control" name="{{name}}_1" type="text" />
<span class="red-fonts" id="captcha-error" style="display: none">验证码错误</span>
</div>
</div>
</br>
......@@ -10,7 +10,7 @@ from .models import User, UserGroup
class UserLoginForm(forms.Form):
username = forms.CharField(label='用户名', max_length=100)
password = forms.CharField(label='密码', widget=forms.PasswordInput, max_length=100)
# captcha = CaptchaField()
captcha = CaptchaField()
class UserAddForm(ModelForm):
......
......@@ -6,8 +6,8 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>INSPINIA | Forgot password</title>
<link rel="shortcut icon" href="{% static "img/facio.ico" %}" type="image/x-icon">
<title>忘记密码</title>
{% include '_head_css_js.html' %}
<link href="{% static "css/jumpserver.css" %}" rel="stylesheet">
......
......@@ -10,6 +10,14 @@
{% include '_head_css_js.html' %}
<link href="{% static "css/jumpserver.css" %}" rel="stylesheet">
<script src="{% static "js/jumpserver.js" %}"></script>
<style>
.captcha {
float: right;
}
#id_captcha_1 {
}
</style>
</head>
<body class="gray-bg">
......@@ -43,7 +51,9 @@
<form class="m-t" role="form" method="post" action="{% url 'users:login' %}">
{% csrf_token %}
{% if form.errors %}
<p class="red-fonts">{{ form.errors }}</p>
{% if 'captcha' in form.errors %}
<p class="red-fonts">验证码错误</p>
{% endif %}
{% endif %}
{% if errors %}
<p class="red-fonts">{{ errors }}</p>
......@@ -54,6 +64,9 @@
<div class="form-group">
<input type="password" class="form-control" name="{{ form.password.html_name }}" placeholder="Password" required="">
</div>
<div>
{{ form.captcha }}
</div>
<button type="submit" class="btn btn-primary block full-width m-b">Login</button>
<a href="{% url 'users:forget-password' %}">
......@@ -78,7 +91,6 @@
</div>
</div>
</div>
</body>
</html>
......
......@@ -10,7 +10,6 @@ app_name = 'users'
urlpatterns = [
url(r'^login$', views.UserLoginView.as_view(), name='login'),
url(r'^logout$', views.UserLogoutView.as_view(), name='logout'),
url(r'^captcha/', include('captcha.urls')),
url(r'^password/forget$', views.UserForgetPasswordView.as_view(), name='forget-password'),
url(r'^password/forget/sendmail-success$',
views.UserForgetPasswordSendmailSuccessView.as_view(), name='forget-password-sendmail-success'),
......
......@@ -42,6 +42,9 @@ class UserLoginView(FormView):
def post(self, request, *args, **kwargs):
form = self.get_form()
if not form.is_valid():
return self.form_invalid(form)
username = form['username'].value()
password = form['password'].value()
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册