SSM秒杀项目(三)登录模块

登录页面:

登录页面(没有注册)可以从网上下载一个简单模板,要修改的就是引用文件的路径。页面展示如下:

数据库准备:

在数据库中新建用户表,字段包括用户名和密码(两次MD5计算后的字符串),还有第二次MD5计算所用到的盐值。插入登录用户数据。

登录逻辑:

①为登录按钮设置点击函数;

②获取用户名和密码,利用js函数对密码+盐值(不是数据库中的盐值)计算md5值,将生成的md5值作为密码和用户一同提交给服务器进行验证。(ajax提交表单数据)

<script type="text/javascript">
		    $('#signup_btn').click(function(){
		    var pwd = $('#password').val();
		    var salt = 'bcia^7*W$Ebih^$87bi';//可自己设置
		    var pwdsalt = pwd+salt;
		    var password = md5(pwdsalt);//与后台规则一样,以便验证
		    //通过ajax请求提交表单数据(用户名和密码)
		    $.ajax({
		      url:"${App_Path}/do_login",
		      type:"POST",
		      data:{username:$('#username').val(),password:password},
		      success:function(result){
		           //如果返回成功 code=0
		           if(result.code==0){
		              alert("success");
                      //跳转秒杀商品列表
		              window.location.href="goods/to_list";
		           }else{
		              alert(result.msg);
		          }
		        }
		    });
		}); 
</script>

 ③前端提交(POST)表单数据之后,后端进行验证

a.表单提交的数据data:username:135****1910,password:123456,通过URI(/do_login)找到对应的Controller,传入参数LoginVo的实例对象(LoginVo是封装属性username和password的类)。

b.判断用户名或密码是否为空,空的直接返回错误信息;

c.如果用户名存在,则对loginVo.password计算MD5值(盐值用到数据库中的),并将数据库中查询的密码进行比较。用户名和密码验证成功返回登录成功码0;

④登录成功或失败要么返回错误信息要么返回成功码,为了统一我们封装一个CodeMsg类

⑤当前端ajax提交表单得到服务器响应后,success:function(result)中result即为服务器验证用户名和密码后的响应信息。得到成功码,跳转秒杀商品列表页,否则提示用户错误信息。 

进一步的考虑:

 http是无状态的连接,在其他页面怎么判断用户是否登录以及登录的用户是谁,这里就要考虑到如何保持登录用户信息。

解决方案:

用户第一次登录后,服务器如果对用户信息校验成功,通过随机生成UUID当做token,以该token为key,登录用户user为value存入第三方缓存中,并在登录成功后将该token写入cookie中,每次浏览器发出请求都带着该token,服务器根据该token从第三方缓存中查询对应的用户信息。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值