SSM商城项目实战:后台管理用户认证
1. 项目概述
本项目是一个基于SSM(Spring+SpringMVC+MyBatis)框架的商城后台管理系统,用于管理商品、订单和用户等信息。在本篇博客中,我们将重点介绍如何实现后台管理用户的认证功能。
2. 技术栈
- 前端:HTML、CSS、JavaScript、Bootstrap
- 后端:Java、Spring、SpringMVC、MyBatis
- 数据库:MySQL
3. 实现思路
用户认证是保护后台管理系统安全的重要措施。在本项目中,我们将使用基于Session的认证方式来实现用户认证功能。具体的实现思路如下:
- 用户登录:用户输入用户名和密码,后台验证用户名和密码是否正确,如果正确则将用户信息保存到Session中。
- 用户访问受保护的资源:后台判断用户是否已经登录,如果已经登录则允许访问,否则跳转到登录页面。
- 用户退出登录:用户点击退出按钮,后台销毁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框架来构建一个简单的后台管理系统,并实现用户认证和权限控制。您可以根据自己的需求进行扩展和定制,以满足实际项目的需求。希望本文对您有所帮助!