设为首页 加入收藏

TOP

Http、Https简介和Session、token的请求流程(一)
2023-07-25 21:36:25 】 浏览:44
Tags:Http Https 简介和 Session token

Http

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

常用请求方式

* get: 从服务器获取请求
* post:更新、修改数据
* delete: 删除数据
* put:创建数据,和insert对应

Https

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


Session原理

Http 无状态,有会话:

  • 无状态是指,请求之间互相独立,第一次请求的数据,第二次请求不能重用

  • 有会话是指,客户端和服务端都有相应的技术,可用暂存数据,让数据在请求间共享

服务端使用了Session技术来暂存数据


Session技术实现身份验证

比较适合于单体项目
流程解析:
一、
1. 用户向服务端发送登录请求
2. LoginController验证用户名,密码是否正确
3. 验证通过后,记录下验证通过的标记
4. 存储标记到Session中
5. 登录成功
二、
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 ;
		}
	}

}

Jwt技术实现身份验证

比较适合分布式项目

流程解析:

一、 
  1. 用户向服务端LoginController发送登录请求
  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;
impo
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇有来实验室|第一篇:Seata1.5.2版.. 下一篇Java8新特性之方法引用

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目