Java中基于Session登录验证

这篇具有很好参考价值的文章主要介绍了Java中基于Session登录验证。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 基于Session的登录验证

基于Session的登录验证方式是最简单的一种登录校验方式。

为啥能用Session作为登录验证的一种方式,因为每个用户的请求都会有一个Session,这个对象是Servlet给我们创建的,不需要我们手动创建,并且这个对象的作用域为整个Web页面,也就是在整个项目中,这个Session可以存储一些内容,相当于全局缓存,并且这个Session有默认的过期时间,默认为30分钟,使得保存到Session对象中的值,可以在各个Web页面中共享。因此,我们可以利用这个特性保存用户的登录信息。我们可以编写一个拦截器,在拦截器中通过request对象获取Session对象,然后根据Key值获取到Value值,类似于Map集合,获取到值后和数据库进行比对,如果用户名和密码一致就放行,否则拦截。

下面是具体的代码:通过请求登录接口校验输入的用户名和密码是否正确,如果正确就把这个用户信息保存到Session对象中。

package com.ukefu.characterglm.controller;

import cn.hutool.crypto.SecureUtil;
import com.ukefu.characterglm.entity.User;
import com.ukefu.characterglm.service.UserService;
import com.ukefu.characterglm.utils.BaseResponse;
import com.ukefu.characterglm.utils.ErrorCode;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpSession;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

/**
 * @author Luke Ewin
 * @date 2024/2/4 14:07
 * @blog blog.lukeewin.top
 */
@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @PostMapping("/login")
    public BaseResponse login(HttpServletRequest request, @RequestBody User user) {
        if (user != null && StringUtils.isNotBlank(user.getName()) && StringUtils.isNotBlank(user.getPassword())) {
            String name = user.getName();
            String password = user.getPassword();

            User tempUser = userService.login(name, SecureUtil.md5(password));
            if (tempUser != null) {
                Map<String, String> map = new HashMap<>();
                map.put("id", String.valueOf(tempUser.getId()));
                map.put("name", tempUser.getName());
                map.put("email", tempUser.getEmail());
                map.put("phone", tempUser.getPhone());
                // 保存用户的登录状态
                HttpSession session = request.getSession();
                session.setAttribute("user", tempUser);
                return BaseResponse.success(map);
            } else {
                return BaseResponse.error(ErrorCode.USERNAME_PASSWORD_ERROR);
            }
        }
        return BaseResponse.error(ErrorCode.MISS_PARAMS);
    }
}

拦截器:

public class LoginInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        HttpSession session = request.getSession();
        Object user = session.getAttribute("user");
        if (user != null) {
            return true;
        }
        request.getRequestDispatcher("/error/login").forward(request, response);
        return false;
    }
}

配置:把自定义的拦截器添加到容器内

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**").excludePathPatterns("/user/login", "/error/**");
    }
}

这里需要注意:一定要记得放行/error/**,否则会报错。文章来源地址https://www.toymoban.com/news/detail-829365.html

到了这里,关于Java中基于Session登录验证的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring boot框架 JWT实现用户账户密码登录验证

    目录 1、JWT定义 1、1 JWT工作流程 1、2 JWT优点 2、添加依赖项到pom.xml  3、创建用户实体类  4、实现认证服务 5、登录请求处理 6、生成JWT JWT(JSON Web Token)是一种用于在网络应用间传递信息的安全传输方式。它是一种紧凑且自包含的方式,通过使用数字签名来验证数据的完整性

    2024年02月07日
    浏览(59)
  • Java21 + SpringBoot3集成easy-captcha实现验证码显示和登录校验

    近日心血来潮想做一个开源项目,目标是做一款可以适配多端、功能完备的模板工程,包含后台管理系统和前台系统,开发者基于此项目进行裁剪和扩展来完成自己的功能开发。 本项目为前后端分离开发,后端基于 Java21 和 SpringBoot3 开发,后端使用 Spring Security 、 JWT 、 Spr

    2024年01月23日
    浏览(58)
  • 【Spring Boot】社交网站中验证用户登录的checkUser方法

    这段代码是UserService类中的checkUser方法,用于验证用户登录。具体解释如下: 方法签名:public boolean checkUser(User user) 参数:User user,表示用户实体对象,包含用户名和密码 返回值:boolean类型,表示验证结果,true表示验证通过,false表示验证失败 逻辑:首先根据用户输入的用

    2024年02月11日
    浏览(40)
  • spring boot3登录开发-2(1图形验证码接口实现)

    ⛰️个人主页:     蒾酒 🔥系列专栏:《spring boot实战》 🌊 山高路远,行路漫漫,终有归途。 目录 前置条件 内容简介 图形验证码接口实现 导入糊涂工具依赖 接口分析 编写验证码接口 测试验证码接口 本文衔接上文,请从上文开始 spring boot3x登录开发-上(整合jwt)-CSDN博客

    2024年02月20日
    浏览(44)
  • spring boot3登录开发-2(2短信验证码接口实现)

      ⛰️个人主页:     蒾酒 🔥系列专栏:《spring boot实战》 🌊山高路远,行路漫漫,终有归途 目录 写在前面 上文衔接 内容简介 短信验证码接口实现 1.依赖导入 2.接口分析 3.实现思路 3.功能实现 创建发送短信工具类 配置阿里云短信服务 接口代码实现 4.功能测试 写在最后

    2024年03月23日
    浏览(43)
  • 用户登录前后端开发(一个简单完整的小项目)——SpringBoot与session验证(带前后端源码)全方位全流程超详细教程

    🧸注:不要看我的文件多,那是我的其他项目,这个项目所用的文件我会全部用红框框起来,没框的部分不用管,前端两个文件,后端一个文件 📜 🧸欢迎来到dream_ready的博客,📜相信你对这篇博客也感兴趣o (ˉ▽ˉ;) 表白墙/留言墙 —— 初级SpringBoot项目,练手项目前后

    2024年02月06日
    浏览(48)
  • Kafka增加安全验证安全认证,SASL认证,并通过spring boot-Java客户端连接配置

    公司Kafka一直没做安全验证,由于是诱捕程序故需要面向外网连接,需要增加Kafka连接验证,保证Kafka不被非法连接,故开始研究Kafka安全验证 使用Kafka版本为2.4.0版本,主要参考官方文档 官网对2.4版本安全验证介绍以及使用方式地址: https://kafka.apache.org/24/documentation.html#secu

    2024年02月01日
    浏览(62)
  • 网页版Java(Spring/Spring Boot/Spring MVC)五子棋项目(二)前后端实现用户的登录和注册功能【用户模块】

    1. 用户id 2. 用户名 3. 密码 4. 天梯积分 5. 总场数 6. 获胜场数 和数据库的数据一一对应 1. 连接数据库(application.yml连接数据库) 这个可以直接赋值代码 2. 创建UserMapper的Java接口(interface UserMapper) 创建接口,在UserMapper.xml实现 在model中创建 需要实现@Mapper注释 3. 创建UserMappe

    2024年02月13日
    浏览(47)
  • 【Spring Boot】SpringBoot参数验证以及实现原理

    参数验证很重要,是平时开发环节中不可少的一部分,但是我想很多后端同事会偷懒,干脆不做,这样很可能给系统的稳定性和安全性带来严重的危害。 那么在Spring Boot应用中如何做好参数校验工作呢,本文提供了小技巧以及验证实现原理,你知道几个呢? Spring Boot 提供了内

    2023年04月16日
    浏览(52)
  • 基于 Spring Boot 支付宝沙箱支付(Java 版本)

    打开沙箱地址:https://open.alipay.com/develop/sandbox/app 需要获取 :AppId、支付宝网关地址、应用私钥、支付宝公钥 注册 https://natapp.cn/ 购买免费隧道 注意:需要记住这个 authtoken,配置文件用得到 配置隧道 文件 config 配置 配置文件需要与 natapp 放在同级目录下 启动 natapp 为什么要

    2024年01月23日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包