session和cookie都是用来存储信息的,区别是session是在服务器端存储信息,而cookie则是在浏览器端存储信息。

通常服务器端存储session,服务器端存储和获取session,一般情况下是比较安全的,不排除黑客侵袭的情况下。不过cookie的话,容易因为cookie欺骗而导致安全性问题。

当然了,现在因为token的流行和应用广泛,使用cookie也不怕安全性问题。

将用户信息存储到session中可以参考如下代码:

@PostMapping(value = "/login",produces="application/json;charset=utf-8")
@SysLog(type="后台系统",action="登录功能",method="POST")
@ApiOperation(value="登录",httpMethod="POST",notes="若登录后token未过期则返回原token,并按照预先定义的有效时间顺延,若过期则生成新token,有效期默认10小时")
public JSONObject getLockPwd(@RequestParam String username, @RequestParam String password, HttpSession session,HttpServletResponse response) {
//接收前台参数
logger.info("用户名:"+username);
logger.info("密码:"+password);
//调用查询逻辑
EntityWrapper<SysUser> wrapper = new EntityWrapper<SysUser>();
wrapper.eq("login_code", username);
SysUser user = userService.selectOne(wrapper); JSONObject json = new JSONObject(); if(user != null && "0".equals(user.getStatus())) {
//获取当前用户
Subject subject = SecurityUtils.getSubject(); //根据前台传的用户名和密码进行认证
UsernamePasswordToken token = new UsernamePasswordToken(username, password); try {
//认证通过
subject.login(token); String encode = Base64.encode(user.getUserCode()); //Cookie有效期默认为8小时
int time=28800; //将Cookie加密为16进制字符串
CookieUtils.setCookie(response, "userCode", encode, time); user.setLastLoginDate(DateUtil.date());
userService.updateById(user); //将userCode放入session中保存
session.setAttribute("userCode", user.getUserCode()); json.put("token", subject.getSession().getId());
json.put(CommonEnum.RETURN_CODE, "000000");
json.put(CommonEnum.RETURN_MSG, "登录成功");
} catch (IncorrectCredentialsException e) {
json.put(CommonEnum.RETURN_CODE, "111111");
json.put(CommonEnum.RETURN_MSG, "用户名或密码错误");
}catch (Exception e) {
json.put(CommonEnum.RETURN_CODE, "222222");
json.put(CommonEnum.RETURN_MSG, "特殊异常");
}
}else {
json.put(CommonEnum.RETURN_CODE, "500");
json.put(CommonEnum.RETURN_MSG, "用户不存在");
} return json; }

关键就是session.setAttribute("userCode", user.getUserCode())这段代码

关于Cookie加密或者是用Cookie存储信息和清除Cookie,可以参考我的这篇文章:js之清除Cookie

如果获取session,参考如下代码:

        HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();

        //获取session
String userCode = (String) request.getSession().getAttribute("userCode");

JavaWeb之session应用的更多相关文章

  1. javaWeb学习-----session

    一.Session简单介绍 在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下).因此,在需要保存用户数据时,服务 ...

  2. javaWEB与Session

    HttpSession(*****)1. HttpSession概述  * HttpSession是由JavaWeb提供的,用来会话跟踪的类.session是服务器端对象,保存在服务器端!!!  * ...

  3. JavaWeb中session创建与销毁的问题

    今天遇到一个奇怪的问题,自己添加了一个session的监听,用来监听在线的人数.但打开浏览器时一直没有走进这个监听中来.最后百度找到了原因: 我们一直存在一个误区,javaweb中的session什么 ...

  4. javaweb学习——session和Cookie实现购物车功能

    1.创建Book类,实现对图书信息的封装. package cn.it.sessionDemo.example1; import java.io.Serializable; /** * 该类实现对图书 ...

  5. JavaWeb——Cookie,Session学习汇总

    什么是Cookie Cookie的作用 安全性能 Cookie的语法 Cookie注意细节 Cookie实例练习 什么是会话Session Session语法 Session与浏览器窗口的关系 ses ...

  6. javaWeb总结——session

    一.session简单介绍 在web开发中,服务器为每个用户浏览器创建一个会话对象,即session对象.一个浏览器独占一个session对象.因此,在需要保护用户数据时,服务器程序可以把用户数据写到 ...

  7. javaweb之session过期验证

    session过期判断的基本思想:用户登录成功后,将用户账号信息保存在session中,然后几乎每次执行命令都要经过过滤器,过滤器检查session中是否存在账号,若不存在, 则返回登录页面,反之正常 ...

  8. 【JavaWeb】Session(转)

    Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自 ...

  9. JavaWeb之session

    Session是服务器端技术 利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自 ...

  10. 8.javaweb之session

    session是客户端和服务端的一次会话 web的session是指用户在浏览某个网站时,从进入网站到关闭浏览器的这段时间,uyejiushi用户浏览这个网站所花费的时间. session是一个时间的 ...

随机推荐

  1. MySql数据库与JDBC编程三

    多表连接查询(两种规范 SQL92和SQL99) SQL92规范: 等值连接,非等值连接,外连接,广义笛卡儿积连接 多个表都放在from后,,连接条件放在where后,条件要求两列值相等,则为等值连接 ...

  2. 在C++中实现类似Java的“synchronized”

    我只是代码的搬运工,原文参见A "synchronized" statement for C++ like in Java.其实现是通过区域锁(Scoped locking)和宏定 ...

  3. No.4一步步学习vuejs之表单输入绑定

    基础用法 你可以用 v-model 指令在表单控件元素上创建双向数据绑定.它会根据控件类型自动选取正确的方法来更新元素.尽管有些神奇,但 v-model 本质上不过是语法糖,它负责监听用户的输入事件以 ...

  4. GIT学习笔记——第一章

    git之vim编辑器退出命令 # 学习笔记 张文军微博主页  张文军码云主页   张文军新浪云主页  张文军博客主页 ## 刚学习git,好多东西没接触过,进入vim后不知道如何出来了,网上找了很多都 ...

  5. <Android 应用 之路> MPAndroidChart~LineChart

    简介 MPAndroidChart是PhilJay大神给Android开发者带来的福利.MPAndroidChart是一个功能强大并且使用灵活的图表开源库,支持Android和IOS两种,这里我们暂时 ...

  6. ArcGIS DataStore手册——管理篇

    第二章:ArcGIS DataStore管理维护 1.备份管理 备份的目的在于发生原始数据损坏或其他突发情况时,可避免数据丢失,并可快速的使用备份数据来恢复,以保证服务仍可使用. 单机模式下,可使用D ...

  7. linux下通过NFS将远程磁盘mount到本地

    最近由于项目原因需要和其他两家公司对接,需要取对方服务器中的图像数据,原本约定是三方都通过http协议来进行通讯,奈何对接方不配合,说文件就在他们服务器放着,怎么取他们不管.所以采取将对方服务器磁盘挂 ...

  8. javax.swing.JComponent 调用顺序

    网上截取的,感觉挺有用,记录下来. http://bbs.csdn.net/topics/310041707 java swing 感觉好复杂啊…………一点都不想用但是作业要用到 >_<; ...

  9. java.langThrowable:STACKTRACE

    Jboss版本是4.2.0.GA代码运行完后总报错 但是程序的运行结果没问题 请问下这是什么原因2009-12-11 01:53:26,611 INFO  [org.jboss.resource.co ...

  10. Oracle IMPDP导入数据案例之注意事项(undo/temp)

    针对Oracle数据迁移,我们可能会用到expdp/impdp的方式,有时候需要大表.lob字段等可能会消耗过大的临时表空间和undo表空间,所以一般我们根据导出日志,在导入前适当调整表空间大小.否则 ...