素材巴巴 > 程序开发 >

会话管理session

程序开发 2023-09-10 10:17:49

 在我们的前段获取我们保存到cookie中的内容,然后通过created方法,已进入页面就请求到,然后在把它赋值给user对象,user对象和页面中的登录框数据进行双向绑定,我们就可以已进入页面就记住上次的密码显示到我们的输入框.

 

 

Session的存储形式

session类似于一个Map集合,里面可以存放多个键值对,是以key-value的形式存放的,
 key必须是一个字符串,value是一个对象.

session底层实现机制

session是每一个浏览器(客户端)所唯一的,这个是怎么实现的呢?其实,在访问一个网站时,
 在HTTP请求中往往会携带一个cookie,这个cookie的名字是JSESSIONID,这个JSESSIONID表
 示的就是session的id,这个是由服务器创建的,并且是唯一的,服务器自使用session时,会根据
 JSESSIONID来进行不同的操作.

如图:

 

1.把当前登录对象保存到session中

2,我们在我们的前端发请求获取当前的登录对象

 3.获取登录对象以后我们就可以通过获取的登录对象对前端做一些事情,比如是否显示某些文本,向下面这个我们没有登录,所有这句就没有必要显示,那么我们就可以用我们的登录对象是否有值进行v-if绑定,确定是否显示

 4.我们的退出登录,我们如果只是做退出登录,不做页面的判断,就是没有登录不能进行某些操作的等等需求,那么我们就可以不用在当前页面向后端controller发去请求,获取当前的登录对象,我们可以直接向后端发出退出等的请求.

然后再controller中删除我们的Session对象就可以了.

对于session

session就是一个存储在服务器的特殊对象,通过session可以实现数据的共享,session有一个JSESSIONID,这个session的唯一标识,使用它可以查找到session,session是会话级别的,对于每一个客户端来说是独享它所拥有的session.对于每一个客户端来说是独享它所拥有的session的,就像是我们每个都在同一台电脑上登录我们的账号,但是我们会进入别人的账号,因为我们此时传过去的用户名和密码保存都session中,session用的是key-value进行保存,没有个key都是唯一的,所以我们不会乱进入别人的登录页面,即使使用同一台电脑,我们用session进行页面页面跳转时,服务端可以利用session进行数据共享,session由服务器进行控制,session的创建和销毁都是服务器进行管理的,服务器会为每个客户端创建一个session.

问题:session只有半个小时的保存时间,就算使用setMaxInactiveInterval(int i):设置session最大的有效时间。注意,这个有效时间是两次访问服务器所间隔的最大时间,如果超过最大的有效时间,那么这个session就失效了。(两次访问服务器是那两次,然后我们过了最大时间会怎么样,在自己没有主动的退出登录的情况下,会自动退出吗?我看到一个答案:客户端在半个小时内没有刷新session会自动失效,那么我们session在进行程序登录的时候我们是根据不同的程序,写了自动刷新这个功能吗?这是个问题,目前没有找到很好的答案,留在这里,等以后学得更多的时候,想起了,在来解决),对于这个session的有效期和过期的时间五花八门,但是我觉得有说你只要在这个程序中操作,那么就会刷新,这个应该是可以的,但是看到一个很不错的session和cookie的介绍,感觉比自己深入多了,把连接分享给你们:http://t.csdn.cn/jKorp

上面的cookie和session我们可以进行权限的限制,但是我们如果每一个都这样一个一个的判断写代码就会很麻烦,所有我们可以用到过滤器,会让代码变得简单.

 过滤器

作用:可以让客户群请求到服务器资源之前或之后经过过滤器

 如何使用过滤器

  1. 创建Filter类文件
  2. 在WebFilter注解中配置处理请求的路径
  3. 在doFilter方法中处理请求,写上判断代码,条件满足执行chain.doFilter(request, response)
  4. 在xxxxApplication.java文件中添加@ServletComponentScan注解,进行过滤器扫描(不添加过滤器不生效)

Filter过滤器类创建方式

在WebFilter注解中配置处理请求的路径

 在xxxxApplication.java文件中(启动类)添加@ServletComponentScan注解

过滤器urlParttens配置方式

有些网站做防盗图就是这样,只要你没有登录,那么你就无法在它的页面上上访问到图片,它的路径也是错误的.

比如我们上面的session与过滤器的结合使用.

 从请求对象中获取Session,此时使我们客户端发过来的请求,然后把这个请求保存到Session中,然后我们再在这个session中获取我们的请求对象,因为我们在登录的时候,登录成功我们把登录的数据装入到了session中,并取名为"user",此时我们在我们的过滤器取出这个叫"user"的session.通过我们的request请求到的数据,装入到我们这个叫"user"的session中,然后判断我们是否登录,然后决定是否放行.

 

                        

标签:

素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。