发表于: 2017-07-21 23:18:27

2 882


今天完成的事情:

      今天一直在研究Token和session的,找到的都是简介,

      学习了Cookie,session,token的区别:

        Cookie:是服务段生成的一段加密的字符串存放在客户端的某个文件夹里,最大4k,

        session:客户端与服务端进行一次会话就会生成一个session,session可以设置在服务器存放的时间

       用户离开后一段时间会被销毁,相对于Cookie来说更安全但也有弊端,就是如果服务器进行了负载均衡,那么下次如果访问别的服务器的时候,session会丢失,因为session一段时间会保存在服务器上,当访问增多,会比较占用系统资源,这种时候就可以使用

Cookie和session结合,Cookie存放用户信息,session存放用户密码

   token:   是“令牌”,是用户身份的验证方式,最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,由token的前几位+盐以哈希算法压缩成一定长的十六进制字符串,可以防止恶意第三方拼接token请求服务器)。还可以把不变的参数也放进token,避免多次查库 

       今天下午完善了一下代码先上传到服务器上,我的登录校验看似没什么问题,但是全部用if else完成会有很浪费资源,频繁的遍历和访问数据库,我也知道不对但是不知道怎么改,

        想找一段demo先看一看但是一直找不到,后来问我一个伙计,他让我搜索"拦截器实现自动登录",最后找到了,我一直在搜索"Token实现代码"等,即使找到了也忽略了,找了一天,略蛋疼...

        最后找到了一个最近的代码,但是报错了

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'loginController' defined in file [E:\Web\Task_5_2\target\ssm\WEB-INF\classes\cn\com\susq\controller\LoginController.class]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class cn.com.susq.controller.LoginController.


放一下我的登录校验代码:

//注册校验

@RequestMapping(value "/ok"method = RequestMethod.POST)

public String ok(Register registerModel model) throws Exception {
for (Register res : categoryMapper.getUsername()
) {
if (register.getUsername().equals(res.getUsername())) {
model.addAttribute("name_error"name_error);
           return "register";
       else if (register.getEmail().equals(res.getEmail())) {
model.addAttribute("email_error"email_error);
           return "register";
       else {
break;
       }
}
DesUtil des = new DesUtil("12345678");
   //加密密码
   String uname = des.encrypt(register.getPassword());
   register.setPassword(uname);
   categoryMapper.register(register);
   model.addAttribute("name"register.getUsername());
   return "ok";
}

//登录校验

@RequestMapping(value "/login"method = RequestMethod.POST)
public String login(Register registerModel model) {
try {
DesUtil des = new DesUtil("12345678");
       Register res = categoryMapper.login(register.getEmail());
       //输出解密后的密码
       System.out.println(des.decrypt(res.getPassword()));
       //拿解密后的密码和用户输入的密码进行比较
       if (des.decrypt(res.getPassword()).equals(register.getPassword())) {
model.addAttribute("success"success);
           return "ok";
       else {
model.addAttribute("failure"failure);
           return "register";
       }
catch (NullPointerException e) {
model.addAttribute("failure"failure);
       return "register";
   catch (Exception e) {
e.printStackTrace();
       return "register";
   }

}

注册信息表

如果用户名或密码错误输出提示信息

因为凡尘已经存在

如果邮箱存在

如果注册成功进入成功页面

这是昨天写的,今天没干什么

明天计划的事情: 

        解决异常,重新写登录校验
遇到的问题: 

        高亮
收获:

         无,很蛋疼的一天.

页面展示:

www.fancen.space


返回列表 返回列表
评论

    分享到