SSM商城项目实战:后台管理用户认证

2023-11-04

SSM商城项目实战:后台管理用户认证

1. 项目概述

本项目是一个基于SSM(Spring+SpringMVC+MyBatis)框架的商城后台管理系统,用于管理商品、订单和用户等信息。在本篇博客中,我们将重点介绍如何实现后台管理用户的认证功能。

2. 技术栈

  • 前端:HTML、CSS、JavaScript、Bootstrap
  • 后端:Java、Spring、SpringMVC、MyBatis
  • 数据库:MySQL

3. 实现思路

用户认证是保护后台管理系统安全的重要措施。在本项目中,我们将使用基于Session的认证方式来实现用户认证功能。具体的实现思路如下:

  1. 用户登录:用户输入用户名和密码,后台验证用户名和密码是否正确,如果正确则将用户信息保存到Session中。
  2. 用户访问受保护的资源:后台判断用户是否已经登录,如果已经登录则允许访问,否则跳转到登录页面。
  3. 用户退出登录:用户点击退出按钮,后台销毁Session中的用户信息,用户需要重新登录才能访问受保护的资源。

4. 实现步骤

4.1 创建数据库表

首先,我们需要创建数据库表来存储用户信息。在MySQL数据库中创建一个名为user的表,包含以下字段:

  • id:用户ID,主键,自增长
  • username:用户名,唯一
  • password:密码

4.2 创建实体类

创建一个User实体类,用于映射数据库中的user表。

public class User {
    private Long id;
    private String username;
    private String password;
    
    // 省略构造方法、getter和setter
}

4.3 创建数据访问层

创建一个UserMapper接口和对应的UserMapper.xml文件,用于定义对用户表的操作。

public interface UserMapper {
    User getUserByUsername(String username);
}
<!-- UserMapper.xml -->
<mapper namespace="com.example.mapper.UserMapper">
    <select id="getUserByUsername" parameterType="string" resultType="com.example.entity.User">
        SELECT * FROM user WHERE username = #{username}
    </select>
</mapper>

4.4 创建服务层

创建一个UserService接口和对应的实现类,用于处理用户认证相关的业务逻辑。

public interface UserService {
    User login(String username, String password);
}
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;
    
    @Override
    public User login(String username, String password) {
        User user = userMapper.getUserByUsername(username);
        
        if (user != null && user.getPassword().equals(password)) {
            return user;
        }
        
        return null;
    }
}

4.5 创建控制器

创建一个UserController控制器类,用于处理用户登录和退出登录的请求。

@Controller
public class UserController {
    @Autowired
    private UserService userService;
    
    @RequestMapping("/login")
    public String login(String username, String password, HttpSession session) {
        User user = userService.login(username, password);
        
        if (user != null) {
            session.setAttribute("user", user);
            return "redirect:/admin/index";
        } else {
            return "redirect:/login";
        }
    }
    
    @RequestMapping("/logout")
    public String logout(HttpSession session) {
        session.invalidate();
        return "redirect:/login";
    }
}

4.6 创建登录页面

src/main/webapp/WEB-INF/views目录下创建一个login.jsp文件,用于显示登录页面。

<!DOCTYPE html>
<html>
<head>
    <title>后台管理系统登录</title>
</head>
<body>
    <h1>后台管理系统登录</h1>
    
    <form action="/login" method="post">
        <div>
            <label for="username">用户名:</label>
            <input type="text" id="username" name="username" required>
        </div>
        <div>
            <label for="password">密码:</label>
            <input type="password" id="password" name="password" required>
        </div>
        <div>
            <button type="submit">登录</button>
        </div>
    </form>
</body>
</html>

4.7 创建受保护的页面

src/main/webapp/WEB-INF/views/admin目录下创建一个index.jsp文件,用于显示后台管理系统的首页。在web.xml文件中配置/admin/*路径需要进行认证。

<!DOCTYPE html>
<html>
<head>
    <title>后台管理系统</title>
</head>
<body>
    <h1>欢迎访问后台管理系统</h1>
    
    <p>您已登录,可以访问受保护的资源。</p>
    
    <a href="/logout">退出登录</a>
</body>
</html>

4.8 配置SpringMVC

src/main/webapp/WEB-INF目录下创建一个web.xml文件,配置SpringMVC的DispatcherServlet和URL映射。

<!-- web.xml -->
<web-app>
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/springmvc-config.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

src/main/webapp/WEB-INF目录下创建一个springmvc-config.xml文件,配置SpringMVC的相关组件和URL映射。

<!-- springmvc-config.xml -->
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://www.springframework.org/schema/context
                           http://www.springframework.org/schema/context/spring-context.xsd
                           http://www.springframework.org/schema/mvc
                           http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    
    <context:component-scan base-package="com.example.controller" />
    
    <mvc:annotation-driven />
    
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".jsp" />
    </bean>
    
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/admin/*" />
            <bean class="com.example.interceptor.AuthenticationInterceptor" />
        </mvc:interceptor>
    </mvc:interceptors>
    
</beans>

4.9 创建认证拦截器

创建一个AuthenticationInterceptor拦截器类,用于判断用户是否已经登录。如果用户未登录,则跳转到登录页面。

public class AuthenticationInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        HttpSession session = request.getSession();
        User user = (User) session.getAttribute("user");
        
        if (user == null) {
            response.sendRedirect("/login");
            return false;
        } else {
            return true;
        }
    }
}

4.10 部署和运行

最后,将项目部署到Tomcat服务器上,并运行项目。访问http://localhost:8080/login可以看到登录页面。输入正确的用户名和密码后,将跳转到后台管理系统的首页

本文介绍了如何使用SpringMVC框架创建一个简单的后台管理系统。首先,我们创建了一个User类作为用户模型,并在登录时验证用户的用户名和密码。然后,我们创建了一个LoginController类来处理登录请求,并在登录成功后将用户信息存储在Session中。接下来,我们创建了一个AdminController类来处理后台管理系统的请求,并通过拦截器来验证用户是否已登录。最后,我们配置了SpringMVC的DispatcherServlet和URL映射,并将项目部署到Tomcat服务器上进行运行。

通过本文的学习,您可以了解到如何使用SpringMVC框架来构建一个简单的后台管理系统,并实现用户认证和权限控制。您可以根据自己的需求进行扩展和定制,以满足实际项目的需求。希望本文对您有所帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SSM商城项目实战:后台管理用户认证 的相关文章

随机推荐

  • vue项目中webpack打包glsl文件不能编译,You may need an appropriate loader to handle this file type

    报错内容如下 You may need an appropriate loader to handle this file type currently no loaders are configured to process this f
  • vue封装插件并发布到npm上

    vue封装插件并发布到npm上 项目初始化 首先 要创建项目 封装vue的插件用webpack simple很合适 vue init webpack simple 项目名称此命令创建我们的项目的目录 创建文件夹和文件 最后结构是这样的 然后
  • Linux系统中修改用户名的两种方案整理

    在安装系统的时候 经常会无意识的随便起个用户名 后面如果发现该用户名不好或因为环境需要须重起个用户名 经过查找资料和亲自测试发现有两种方案可选 手动修改和使用usermod等命令自动修改 方案一 手动修改各个关联用户文件 以root身份登录
  • Qt内存泄漏篇

    一 常见内存泄漏例子 内存泄漏例子 1 prop 对象在栈函数中创建后 使用完后没有释放 导致每调用一次 内存泄漏一次 2 QObject子对象cleaner在创建时 没有指定父对象 且在栈函数中调用完毕后 没有释放 3 基类的类析构函数没
  • SeleniumLibrary4.5.0 关键字详解(八)

    SeleniumLibrary4 5 0 关键字详解 八 库版本 4 5 0 库范围 全局 命名参数 受支持 简介 SeleniumLibrary是Robot Framework的Web测试库 本文档说明了如何使用SeleniumLibra
  • Notepad++ 16进制编辑功能

    Notepad 可以编辑PE文件 二进制文件即HEX码 2进制 16进制都可以 通过附加的组件HexEditor即可实现 另外一款Notepad 自带插件TextFX也有这个功能 但实现效果不如Hex Editor Hex Editor实现
  • vscode 链接方式解决插件位置

    直接进入正题 在想要安装插件的位置建立文件夹 如下图所示 之后再windows的cmd指令中运行如下指令 注意在此需要以管理员身份运行cmd mklink D C Users vscode extensions F Microsoft VS
  • extended initializer lists only available with -std=c++11

    extended initializer lists only available with std c 11 or std gnu 11 enabled by default g MutexThread c lpthread o mute
  • 暴力破解zip加密压缩包

    最近恰好有个压缩包要解密 所以稍微研究了一下该怎么去破解加密的压缩包 zip rar在道理上是一样的 由于现有的方法中没想到高级的破解方式 所以只有暴力破解压缩包了 暴力破解压缩包的原理很简单 就是先制作一个密码字典 这个字典是暴力破解的核
  • Java:读取excel文件中的内容(简单、详细、明确、有全部代码)

    Java 读取excel文件中的内容 一 引入依赖 二 引入工作类 三 读取excel内容 一 引入依赖 注意 jxl 仅支持读取 xls 文件 读 xlsx 会报错 在 pom xml 中引入 jxl 的依赖
  • 使用SecureCRT 和 SecureFX遇到的几点问题以及解决

    一 使用SecureCRT 时候打开SecureFX的时候无法连接到Linux目录 打开SecureFX的时候无法打开上传目录弹出对话框 the file transfer protocol none specified in the se
  • 基于图像的火焰识别调研总结

    转载请注明出处https blog csdn net Hey chaoxia article details 85054870 简单总结一下近期的调研结果 一 简介 火焰的图像识别 主要围绕火焰的颜色特征 运动特征 几何特征与纹理特征来分析
  • Vue3+Vite+Pinia+Naive后台管理系统搭建之一:基础项目构建

    前言 如果对 vue3 的语法不熟悉的 可以移步 Vue3 0 基础入门 快速入门 github 开源库 Vue3 Vite Pinia Naive Js gitee 开源库 Vue3 Vite Pinia Naive Js 1 构建项目
  • AQS流程图

    整个AQS加锁解锁过程
  • jq 获取下拉框的值和value

    误区 一直以为jquery获取select中option被选中的文本值 是这样写的 s text 获取所有option的文本值 实际上应该这样 s option selected text 获取选中的option的文本值 获取select中
  • 深入了解ln命令:创建硬链接和符号链接的实用指南

    文章目录 1 引言 1 1 关于ln命令 1 2 ln命令的作用和用途 2 基本用法 2 1 创建硬链接 2 2 创建符号链接 2 3 区别硬链接和符号链接 3 操作示例 3 1 创建硬链接的示例 3 2 创建符号链接的示例 3 3 查看链
  • eval()函数的用法

    1 eval 函数函数基本原理 eval s 函数将去掉字符串s最外侧的引号 并按照Python语句方式执行去掉引号后的字符内容 使用方式如下 lt 变量 gt eval lt 字符串 gt a eval 1 2 print a 输出结果
  • 客户管理系统 详细流程(不用三大框架)

    客户管理系统的详细编写流程 一 系统设计 1 需求分析 系统中包含哪些数据模型 数据模型存在怎样的关系 E R图 UML 用例图 2 制作页面Demo 和真实系统效果一样 给客户确认需求 3 技术选型 环境搭建 软件建模工具 IBM RSA
  • [Python-9]GUI编程

    一 GUI图形用户界面编程介绍 我们前面实现的都是基于控制台的程序 程序和用户的交互通过控制台来完成 本章 我们将学习GUI Graphics User Interface 即图形用户界面编程 我们可以通过python提供的丰富的组件 快速
  • SSM商城项目实战:后台管理用户认证

    SSM商城项目实战 后台管理用户认证 1 项目概述 本项目是一个基于SSM Spring SpringMVC MyBatis 框架的商城后台管理系统 用于管理商品 订单和用户等信息 在本篇博客中 我们将重点介绍如何实现后台管理用户的认证功能