LXY_branch
lxy 3 months ago
parent 30d8fb38e7
commit a02180ded0

@ -53,7 +53,7 @@ class AccountTest(TestCase):
article.save()
response = self.client.get(article.get_admin_url())
self.assertEqual(response.status_code, 200)#测试管理员账号登录后台功能:创建超级用户,验证登录状态和后台页面访问状态
self.assertEqual(response.status_code, 200)#lxy测试管理员账号登录后台功能:创建超级用户,验证登录状态和后台页面访问状态
def test_validate_register(self):
self.assertEquals(
@ -116,7 +116,7 @@ class AccountTest(TestCase):
self.assertIn(response.status_code, [301, 302, 200])
response = self.client.get(article.get_admin_url())
self.assertIn(response.status_code, [301, 302, 200])#测试用户注册流程:验证注册前后用户数量变化,邮箱验证链接的有效性,以及注册后用户权限、文章发布等功能
self.assertIn(response.status_code, [301, 302, 200])#lxy测试用户注册流程:验证注册前后用户数量变化,邮箱验证链接的有效性,以及注册后用户权限、文章发布等功能
def test_verify_email_code(self):
to_email = "admin@admin.com"
@ -128,7 +128,7 @@ class AccountTest(TestCase):
self.assertEqual(err, None)
err = utils.verify("admin@123.com", code)
self.assertEqual(type(err), str)#测试邮箱验证码功能:验证有效邮箱和无效邮箱的验证码校验结果
self.assertEqual(type(err), str)#lxy测试邮箱验证码功能:验证有效邮箱和无效邮箱的验证码校验结果
def test_forget_password_email_code_success(self):
resp = self.client.post(
@ -137,7 +137,7 @@ class AccountTest(TestCase):
)
self.assertEqual(resp.status_code, 200)
self.assertEqual(resp.content.decode("utf-8"), "ok")#测试忘记密码的邮箱验证码发送:分别验证成功和失败场景(如邮箱错误)的接口响应
self.assertEqual(resp.content.decode("utf-8"), "ok")#lxy测试忘记密码的邮箱验证码发送:分别验证成功和失败场景(如邮箱错误)的接口响应
def test_forget_password_email_code_fail(self):
resp = self.client.post(
@ -203,5 +203,5 @@ class AccountTest(TestCase):
data=data
)
self.assertEqual(resp.status_code, 200)#测试忘记密码流程:成功场景:验证密码修改后是否生效;失败场景:验证不存在用户、验证码错误时的接口响应
self.assertEqual(resp.status_code, 200)#lxy测试忘记密码流程:成功场景:验证密码修改后是否生效;失败场景:验证不存在用户、验证码错误时的接口响应

@ -2,7 +2,7 @@ from django.contrib.auth import get_user_model
from django.contrib.auth.backends import ModelBackend
class EmailOrUsernameModelBackend(ModelBackend):#自定义Django认证后端支持用户名或邮箱两种方式登录。
class EmailOrUsernameModelBackend(ModelBackend):#lxy自定义Django认证后端支持用户名或邮箱两种方式登录。
"""
允许使用用户名或邮箱登录
"""
@ -18,10 +18,10 @@ class EmailOrUsernameModelBackend(ModelBackend):#自定义Django认证后端
return user
except get_user_model().DoesNotExist:
return None
#核心认证逻辑:判断输入是否为邮箱(含@分别用邮箱或用户名查询用户验证密码后返回用户对象若用户不存在则返回None。
#lxy核心认证逻辑:判断输入是否为邮箱(含@分别用邮箱或用户名查询用户验证密码后返回用户对象若用户不存在则返回None。
def get_user(self, username):
try:
return get_user_model().objects.get(pk=username)
except get_user_model().DoesNotExist:
return None
#根据用户ID主键查询用户不存在则返回None用于Django认证系统的用户查询环节
#lxy根据用户ID主键查询用户不存在则返回None用于Django认证系统的用户查询环节

@ -7,7 +7,7 @@ from django.utils.translation import gettext_lazy as _
from djangoblog.utils import send_email
_code_ttl = timedelta(minutes=5)#验证码有效期设置为5分钟。
_code_ttl = timedelta(minutes=5)#lxy验证码有效期设置为5分钟。
def send_verify_email(to_mail: str, code: str, subject: str = _("Verify Email")):
@ -44,6 +44,6 @@ def set_code(email: str, code: str):
cache.set(email, code, _code_ttl.seconds)
def get_code(email: str) -> typing.Optional[str]:#从缓存中获取指定邮箱对应的验证码
def get_code(email: str) -> typing.Optional[str]:#lxy从缓存中获取指定邮箱对应的验证码
"""获取code"""
return cache.get(email)

@ -33,7 +33,7 @@ logger = logging.getLogger(__name__)
class RegisterView(FormView):
form_class = RegisterForm
template_name = 'account/registration_form.html'#处理用户注册逻辑指定表单类RegisterForm和模板account/registration_form.html。
template_name = 'account/registration_form.html'#lxy处理用户注册逻辑指定表单类RegisterForm和模板account/registration_form.html。
@method_decorator(csrf_protect)
def dispatch(self, *args, **kwargs):
@ -77,11 +77,11 @@ class RegisterView(FormView):
else:
return self.render_to_response({
'form': form
})#form_valid方法中保存用户并设置为非活跃状态生成邮箱验证链接并发送验证邮件最后重定向到结果页。
})#lxyform_valid方法中保存用户并设置为非活跃状态生成邮箱验证链接并发送验证邮件最后重定向到结果页。
class LogoutView(RedirectView):
url = '/login/'#处理用户登出,登出后重定向到/login/
url = '/login/'#lxy处理用户登出,登出后重定向到/login/
@method_decorator(never_cache)
def dispatch(self, request, *args, **kwargs):
@ -90,7 +90,7 @@ class LogoutView(RedirectView):
def get(self, request, *args, **kwargs):
logout(request)
delete_sidebar_cache()
return super(LogoutView, self).get(request, *args, **kwargs)#get方法中调用logout登出用户删除侧边栏缓存后完成重定向
return super(LogoutView, self).get(request, *args, **kwargs)#lxyget方法中调用logout登出用户删除侧边栏缓存后完成重定向
class LoginView(FormView):
@ -98,7 +98,7 @@ class LoginView(FormView):
template_name = 'account/login.html'
success_url = '/'
redirect_field_name = REDIRECT_FIELD_NAME
login_ttl = 2626560 # 一个月的时间
login_ttl = 2626560 #lxy 一个月的时间
@method_decorator(sensitive_post_parameters('password'))
@method_decorator(csrf_protect)
@ -113,7 +113,7 @@ class LoginView(FormView):
redirect_to = '/'
kwargs['redirect_to'] = redirect_to
return super(LoginView, self).get_context_data(**kwargs)#处理用户登录逻辑指定表单类LoginForm、模板account / login.html和成功后重定向地址 /
return super(LoginView, self).get_context_data(**kwargs)#lxy处理用户登录逻辑指定表单类LoginForm、模板account / login.html和成功后重定向地址 /
def form_valid(self, form):
form = AuthenticationForm(data=self.request.POST, request=self.request)
@ -125,11 +125,11 @@ class LoginView(FormView):
if self.request.POST.get("remember"):
self.request.session.set_expiry(self.login_ttl)
return super(LoginView, self).form_valid(form)
# return HttpResponseRedirect('/')
#lxyreturn HttpResponseRedirect('/')
else:
return self.render_to_response({
'form': form
})#form_valid方法中验证表单登录用户并根据“记住我”选项设置会话过期时间
})#lxyform_valid方法中验证表单登录用户并根据“记住我”选项设置会话过期时间
def get_success_url(self):
@ -138,7 +138,7 @@ class LoginView(FormView):
url=redirect_to, allowed_hosts=[
self.request.get_host()]):
redirect_to = self.success_url
return redirect_to#get_success_url方法处理登录后的重定向地址确保其安全性
return redirect_to#lxyget_success_url方法处理登录后的重定向地址确保其安全性
def account_result(request):
@ -146,7 +146,7 @@ def account_result(request):
id = request.GET.get('id')
user = get_object_or_404(get_user_model(), id=id)
logger.info(type)#处理注册和邮箱验证的结果逻辑根据type参数区分场景
logger.info(type)#lxy处理注册和邮箱验证的结果逻辑根据type参数区分场景
if user.is_active:
return HttpResponseRedirect('/')
if type and type in ['register', 'validation']:
@ -176,7 +176,7 @@ def account_result(request):
class ForgetPasswordView(FormView):
form_class = ForgetPasswordForm
template_name = 'account/forget_password.html'#处理忘记密码逻辑指定表单类ForgetPasswordForm和模板account/forget_password.html
template_name = 'account/forget_password.html'#lxy处理忘记密码逻辑指定表单类ForgetPasswordForm和模板account/forget_password.html
def form_valid(self, form):
if form.is_valid():
@ -185,10 +185,10 @@ class ForgetPasswordView(FormView):
blog_user.save()
return HttpResponseRedirect('/login/')
else:
return self.render_to_response({'form': form})#form_valid方法中验证表单后重置用户密码并重定向到登录页
return self.render_to_response({'form': form})#lxyform_valid方法中验证表单后重置用户密码并重定向到登录页
class ForgetPasswordEmailCode(View):# 处理忘记密码的邮箱验证码发送逻辑
class ForgetPasswordEmailCode(View):#lxy处理忘记密码的邮箱验证码发送逻辑
def post(self, request: HttpRequest):
form = ForgetPasswordCodeForm(request.POST)
@ -200,4 +200,4 @@ class ForgetPasswordEmailCode(View):# 处理忘记密码的邮箱验证码发送
utils.send_verify_email(to_email, code)
utils.set_code(to_email, code)
return HttpResponse("ok")# post方法中验证邮箱表单生成并发送验证码将验证码存入缓存后返回成功标识
return HttpResponse("ok")#lxypost方法中验证邮箱表单生成并发送验证码将验证码存入缓存后返回成功标识

Loading…
Cancel
Save