美多商城项目之用户登录页面后端实现

首先,我们需要进行业务逻辑分析。

通过上图,我们可以知道,用户登录界面的后端流程,如下:

1. 接收前端传递的参数

2. 校验参数

3. 核心逻辑

4. 返回响应结果

其核心逻辑主要为:

判断前端传递的手机号或用户名是否存在MySQL数据库中,

  1. 如果存在,则校验密码是否正确、

    1.1 如果密码正确,则设置状态保持。

    1.2 如果密码不正确,则响应用户名或密码错误

   2. 如果不存在,则响应账号不存在

既然我们明确了核心的逻辑,那么接下来我们就用代码说话吧。

class LoginView(View):

    def get(self, request):
        """提供用户登录页面"""
        return render(request, ‘login.html‘)

    def post(self, request):
        """实现用户登录逻辑"""
        # 接收参数
        username = request.POST.get(‘username‘)
        password = request.POST.get(‘password‘)
        remembered = request.POST.get(‘remembered‘)

        # 校验参数
        # 判断参数是否齐全,remembered是可选的
        if not all([username, password]):
            return http.HttpResponseForbidden(‘缺少必传参数‘)
        # 判断用户名是否是5-20个字符
        if not re.match(r‘^[a-zA-Z0-9_-]{5,20}$‘, username):
            return http.HttpResponseForbidden(‘请输入正确的用户名或手机号‘)
        # 判断密码是否是8-20个数字
        if not re.match(r‘^[0-9A-Za-z]{8,20}$‘, password):
            return http.HttpResponseForbidden(‘密码最少8位,最长20位‘)

        # 认证用户
        user = authenticate(request, username=username, password=password)
        if not user:
            return render(request, ‘login.html‘, {‘account_errmsg‘: ‘账号或密码错误‘})

        # 状态保持
        login(request, user)
        # 根据用户是否记住登录来设置状态保持的生命周期
        if remembered != ‘on‘:
            # 不记住登录:浏览器会话结束后状态保持销毁,设置session的有效期为0秒
            request.session.set_expiry(0)
        else:
            # 记住登录:状态保持为两周,如果传入None,默认两周
            request.session.set_expiry(None)

        # 登录成功后重定向到其他页面
        next = request.GET.get(‘next‘)
        if next:
            # 跳转到next对应的页面
            response = redirect(next)
        else:
            # # 跳转到首页
            response = redirect(reverse(‘contents:index‘))

        # 登录成功之后,响应之前,用户名写入到cookie
        response.set_cookie(‘username‘, user.username, max_age=3600*24*7)

        # 响应结果
        return response

原文地址:https://www.cnblogs.com/chao666/p/12187486.html

时间: 2024-10-04 18:27:59

美多商城项目之用户登录页面后端实现的相关文章

2018-8-6对美多商城项目的总结

2018-8-6对美多商城项目的总结 美多商城商业模式: C2B模式(消费者到企业的商业模式),相类似网站包括:京东,淘宝,海尔商城,尚品宅配等. 商城需求分析 1,用户部分 2,商品部分 3,购物车部分 4,商品订单备份 5,用户支付部分 6,上线程序的配置 用户部分模块: 基本功能:用户注册,登录,密码的重置,第三方登录 用户注册 1,图片验证码 流程分析: 1,前端生成uuid随机字符串 2,后端生成图片验证码发送给前端,将图形验证码的存入到redis中 2,短信验证码 1,检查图片的验证

美多商城项目总结

注册 一般来说,注册模块并没有什么难点,但我在注册模块中写了两种验证码(普通验证码,短信验证码),普通验证码没有难度,但手机验证码需要在twilio网获取免费手机号,通过这个手机号给注册用户发短信验证码. 作用: 注册验证逻辑 短信+邮件+验证码 防止机器人重复注册 登录 我的登陆模块写了第三方登录,因为大多数网站都有第三方登陆,并且第三方登录可以省许多时间,比较方便. 关于三方登录的授权机制 在授权过程中大致有三个对象.一个是服务提供方(第三方网站).一个是用户(将资源放在服务提供方存放的对象

用户登录页面

Login.jsp 页面: <%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" %><%@ page import="java.text.*" %><% String path = request.getContextPath();%><!DOCTYPE html PU

简洁的用户登录页面设计

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

mvc+三层 网站项目:用户登录(2)+页面权限

第一:新建 Areas文件夹,Login文件夹(controllers,Models,Views) 括号里面为文件夹下的文件夹 第二:新建控制器 HomeController public ActionResult login() { return View(); } 第三:在Models下新建,Login类,RetInfo类 public class Paramlogin:RetInfo//引用RetInfo类    {        /// <summary>        /// 用户名

制作一个银行卡用户登录页面,提交后连接数据库进行登录验证,根据验证结果跳转到不同页面

Login.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd&quo

&lt;Android考证之实训项目三&gt;用户登录对话框设计

项目截图 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 xmlns:tools="http://sche

JSP内置对象---request对象(用户登录页面(返回值和数组:gerParameter,getParameterValues))

创建两个jsp页面:reg.jsp 和 request.jsp reg.jsp: <%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%> <%@ page import="java.text.*" %><% String path = request.getContextPath(

11(maven+SSH)网上商城项目实战之Freemarker 页面静态化

FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 l         FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序 l         虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据(如下图) 模板 + 数据模型 = 输出 l         FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件 l