登录校验
本文最后更新于 90 天前,其中的信息可能已经有所发展或是发生改变。

一、会话技术

  • 会话:用户打开浏览器,访问 web 服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应。
  • 会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便在同一次会话的多次请求间共享数据。
  • 会话跟踪方案:
    • 客户端会话跟踪技术:Cookie
    • 服务端会话跟踪技术:Session
    • 令牌技术

二、会话跟踪

  • cookie

在浏览器第一次请求服务器后,服务器会设置一个cookie,服务器会自动将cookie响应给浏览器,浏览器在接收到服务器响应的数据后,会自动地讲cookie存储在本地,在后续的请求中,浏览器会自动地将cookie携带到服务端

cookie是HTTP协议中支持的技术,各大浏览器厂商都使用了这个标准(http)

  • 代码
@RestController
public class SessionController {

    //设置Cookie
    @GetMapping("/c1")
    public Result cookie1(HttpServletResponse response) {
        response.addCookie(new Cookie("login_username", "itheima")); //设置Cookie/响应Cookie
        return Result.success();
    }

    //获取Cookie
    @GetMapping("/c2")
    public Result cookie2(HttpServletRequest request) {
        Cookie[] cookies = request.getCookies(); //获取所有的Cookie
        for (Cookie cookie : cookies) {
            if(cookie.getName().equals("login_username")) { //输出name为 login_username 的cookie
                System.out.println("login_username: "+cookie.getValue());
            }
        }
        return Result.success();
    }
}

访问c1,浏览器响应回来的数据(响应头)

浏览器在接收到响应的数据后会自动解析响应头,如果有一个响应头叫set-cookie,它会自动地将cookie的值存储在浏览器本地

访问c2的时候浏览器发送的请求头携带了cookie

– 优点:HTTP协议中支持的技术

– 缺点:

– 移动端APP无法使用Cookie

– 不安全,用户可以自己禁用Cookie

– Cookie不能跨域

跨域问题

  • session
//往HttpSession中存储值
@GetMapping("/s1")
public Result session1(HttpSession session) {
    log.info("HttpSession-s1: {}", session.hashCode());
    session.setAttribute("loginUser", "tom"); //往session中存储数据
    return Result.success();
}

//从HttpSession中获取值
@GetMapping("/s2")
public Result session2(HttpServletRequest request) {
    HttpSession session = request.getSession();
    log.info("HttpSession-s2: {}", session.hashCode());
    Object loginUser = session.getAttribute("loginUser"); //从session中获取数据
    log.info("loginUser: {}", loginUser);
    return Result.success(loginUser);
}

访问c1,服务端的响应头

Jsessionid就是服务器端session的id

session的底层是基于cookie实现的

  • 令牌技术

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇