Http、Https简介和Session、token的请求流程()

  本篇文章为你整理了Http、Https简介和Session、token的请求流程()的详细内容,包含有 Http、Https简介和Session、token的请求流程,希望能帮助你了解 Http、Https简介和Session、token的请求流程。

   Http (超文本输出协议) 是一种分布式、协作式和超媒体信息系统的应用层协议,它通常运行在TCP之上,因特网应用最广泛的便是Http协议,所有www都遵循这个标准。主要用于Web 浏览器与 Web 服务器之间的通信而设计的,但也可以用于其他目的,是一个基于 TCP/IP 通信协议来传递数据的(HTML 文件、图片文件、查询结果等)。简单的来说,是用于获取和请求,客户端和服务端传递数据

  常用请求方式

  

* get: 从服务器获取请求

 

  * post:更新、修改数据

  * delete: 删除数据

  * put:创建数据,和insert对应

  

 

  Https

   HTTPS(超文本传输安全协议)是一种透过计算机网络进行安全通信的传输协议。主要目的是提供对网站服务器的身份认证,保护交换数据的隐私与完整性

  Session原理

  Http 无状态,有会话:

  
1. 用户的其他请求要访问权限时,发送请求到LoginInterrceptor拦截器
 

  2. 拦截器检测是否存在用户名
 

  3. 存在即可访问,不存在用户名则要用户登录

  点击查看代码

  

//JavaWeb

 

  package com.wyw.text.servlet;

  import java.io.IOException;

  import javax.servlet.ServletException;

  import javax.servlet.annotation.WebServlet;

  import javax.servlet.http.HttpServlet;

  import javax.servlet.http.HttpServletRequest;

  import javax.servlet.http.HttpServletResponse;

  import com.wyw.text.Dao.UserDao;

  import com.wyw.text.Dao.impl.UserDaoimpl;

  import com.wyw.text.domin.User;

  @WebServlet("/loginservlet")

  public class loginservlet extends HttpServlet {

   private static final long serialVersionUID = 1L;

   public loginservlet() {

   super();

   // TODO Auto-generated constructor stub

   protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

   // TODO Auto-generated method stub

   response.getWriter().append("Served at: ").append(request.getContextPath());

   protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

   response.setContentType("text/heml;charset=utf-8");

   request.setCharacterEncoding("utf-8");

   String username=request.getParameter("username");

   String password=request.getParameter("password");

   UserDao userDao=new UserDaoimpl();

   User user=userDao.addfind(username, password);

   if(user==null){

   request.setAttribute("pwd", "用户名或者密码错误");

   request.getRequestDispatcher("/login.jsp").forward(request,response);

   return ;

   }else{

   request.getSession().setAttribute("user", user);

   response.sendRedirect(request.getContextPath()+"/index.jsp");

   return ;

  

 

  
2. LoginController验证用户名,密码是否正确

   3. 验证通过后,返回token到客户端,并存储起来(例如cookie)

   4. 登录成功

   1. 客户端其他页面的请求,并携带token

   2. 过滤器验证token

   3. 校验无误即可访问

  

 

 

  过滤器代码

  点击查看代码

  

package com.kob.backend.config.filter;

 

  import com.kob.backend.mapper.UserMapper;

  import com.kob.backend.pojo.User;

  import com.kob.backend.service.impl.utils.UserDetailsImpl;

  import com.kob.backend.utils.JwtUtil;

  import io.jsonwebtoken.Claims;

  import org.jetbrains.annotations.NotNull;

  import org.springframework.beans.factory.annotation.Autowired;

  import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;

  import org.springframework.security.core.context.SecurityContextHolder;

  import org.springframework.stereotype.Component;

  import org.springframework.util.StringUtils;

  import org.springframework.web.filter.OncePerRequestFilter;

  import javax.servlet.FilterChain;

  import javax.servlet.ServletException;

  import javax.servlet.http.HttpServletRequest;

  import javax.servlet.http.HttpServletResponse;

  import java.io.IOException;

  @Component

  public class JwtAuthenticationTokenFilter extends OncePerRequestFilter {

   @Autowired

   private UserMapper userMapper;

   @Override

   protected void doFilterInternal(HttpServletRequest request, @NotNull HttpServletResponse response, @NotNull FilterChain filterChain) throws ServletException, IOException {

   String token = request.getHeader("Authorization");

   if (!StringUtils.hasText(token) !token.startsWith("Bearer ")) {

   filterChain.doFilter(request, response);

   return;

   token = token.substring(7);

   String userid;

   try {

   Claims claims = JwtUtil.parseJWT(token);

   userid = claims.getSubject();

   } catch (Exception e) {

   throw new RuntimeException(e);

   User user = userMapper.selectById(Integer.parseInt(userid));

   if (user == null) {

   throw new RuntimeException("用户名未登录");

   UserDetailsImpl loginUser = new UserDetailsImpl(user);

   UsernamePasswordAuthenticationToken authenticationToken =

   new UsernamePasswordAuthenticationToken(loginUser, null, null);

   SecurityContextHolder.getContext().setAuthentication(authenticationToken);

   filterChain.doFilter(request, response);

  以上就是Http、Https简介和Session、token的请求流程()的详细内容,想要了解更多 Http、Https简介和Session、token的请求流程的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: