Spring boot 前端页面跳转的时候,用户请求数据,后台怎么知道是谁在请求

第一次做web,一个问题,就是用户登录了,访问其他页面的时候肯定要向服务器请求数据,那服务端怎么知道这个人是谁呢,也就是说前端请求的时候用什么来表明
自己身份呢?
Spring boot+前端themleaf的(或者纯的HTML)
查了,2种方法:
1,用户登录时候,后台保存了session(安全登录验证了),然后这个session会一同返回给前端,只不过
返回的是一个id值,并不能直接获取session保存的值,以后只要没有注销,那就ajax请求获得后台保存的session值,我保存用户id,然后用这个id去请求数据
2,前端使用cookie保存用户信息和1差不多

跪求大佬们,其他的思路

0

5个回答

在Spring Boot中 使用Session,spring boot内置tomcat服务器。Tomcat服务器在每次Http连接建立是时保存连接和Session_ID.
也就是一个键值对

 <HttpConnection,SessionID>

SessionID保存在浏览器端Cookie,浏览器拿SessionID作为凭证来通知服务器,服务器查找HttpConnection中信息。
但是,虽然HttpSession透明提供了很多信息。要查 用户身份,还要再HttpSession中存上用户id,但是id不需要让前端
知道,前端只需要提交表单。

//后台可以这样获取
 @RequestMapping(path="/sessiontest")
      public String sessionTest(HttpSession session) {
          long id=(long)session.getAttribute("id");
          System.out.println("============id========="+id);
          return "test";
      }

一般再用户登陆之后,id就会保存在HttpSession中。
因为id是PIN,目前没有其他方法。
当浏览器关闭,进程管理器会将浏览器与远程ip建立的所有连接全部重置,这就是
即使你关掉CSDN,即使很短之间内再次打开浏览器访问,还是得重新登陆的原因。

0
qq_38888706
八阿哥看招 谢谢啦,已采纳,就是这样解决的,
一年多之前 回复

一般都是用session在页面间传递数据

0
qq_33745102
一嵩寒溪 回复qq_30770095: 可以,不过Redis缓存在Window上好像不太好使,这是我现在很头疼的问题
一年多之前 回复
qq_38888706
八阿哥看招 回复qq_30770095: 非常感谢,了解到了流行的做法,小白受教了,祝大佬高升
一年多之前 回复
qq_30770095
亲爱的撒旦 回复qq_38888706: 目前springboot越来越火,同时也导致了前后端分离的产品越来越多,当前后端分离之后出现的一个非常典型的问题就是你说的这个传值的问题,现在最流行的有两种做法。1:对session进行集群管理,前端发送JSessionId,后端根据JSessionId取session的值,这种做法值还是存放在session中,而真正的session则是存放在缓存服务器中,例如redis和memcached。2:第二种做法是将用户信息在登录时便将用户信息和过期时间等经过一系列的加密生成一串token,返回给前端,前端以后再访问时要带上这个token,而后端会判断token是否过期,若过期就重新登录。这是目前比较流行的两种做法,具体根据自己的业务逻辑进行选择。纯手打,谢谢!
一年多之前 回复
qq_38888706
八阿哥看招 那个我记得是动态页面前端就有session这个属性,我想用纯HTML,不知道一般怎么来在页面之间传递数据,还是把数据每次请求都附在请求连接中
一年多之前 回复

可以用shiro底层也是session

0

通过session可以

0

前面说的所有的都是一个原理呢 cookie+session实现 或者模拟这个实现方式衍生的比如 token+redis等等。大致为登陆成功后存储用户信息至session或redis或其他中,
生成key值。将key作为value保存至cookie ,设置cookie的key.这样的模式来完成。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!