0
点赞
收藏
分享

微信扫一扫

spring boot Shiro mysql

使用Spring Boot、Shiro和MySQL实现用户认证和授权

概述

在本文中,我将向你介绍如何在Spring Boot项目中使用Shiro和MySQL来实现用户认证和授权的功能。Shiro是一个强大的Java安全框架,它提供了身份验证、授权、加密、会话管理等功能,可以帮助我们快速构建安全可靠的应用程序。

流程图

flowchart TD
    A[创建Spring Boot项目] --> B[配置pom.xml文件]
    B --> C[创建数据库表]
    C --> D[编写Shiro配置类]
    D --> E[编写User实体类]
    E --> F[编写UserService接口和实现类]
    F --> G[编写UserController]
    G --> H[编写登录页面和首页]

步骤

1. 创建Spring Boot项目

首先,我们需要创建一个新的Spring Boot项目。你可以使用IDE或者使用Spring Initializer来创建项目。在创建项目时,需要添加相关的依赖项,包括spring-boot-starter-web、spring-boot-starter-data-jpa、spring-boot-starter-thymeleaf、mysql-connector-java和shiro-spring-boot-starter等。

2. 配置pom.xml文件

在项目的pom.xml文件中,需要添加Shiro和MySQL的依赖项。你可以在Shiro官方网站或者Maven中央仓库中找到最新的版本。

<dependencies>
    <!-- Spring Boot Starter -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <!-- Spring Boot Data JPA Starter -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    
    <!-- Spring Boot Thymeleaf Starter -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    
    <!-- MySQL Connector -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    
    <!-- Shiro Starter -->
    <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-spring-boot-starter</artifactId>
        <version>1.7.1</version>
    </dependency>
</dependencies>

3. 创建数据库表

我们需要创建一个名为"users"的表,用于存储用户信息。表中需要包含id、username和password字段。你可以使用MySQL的命令行或者图形化工具来创建表。

CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
    password VARCHAR(100) NOT NULL
);

4. 编写Shiro配置类

在src/main/java目录下创建一个名为ShiroConfig的类,用于配置Shiro的相关设置。首先,我们需要注入一个SecurityManager实例,并将其设置为Spring的默认安全管理器。

@Configuration
public class ShiroConfig {
    
    @Bean
    public SecurityManager securityManager(UserRealm userRealm) {
        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
        securityManager.setRealm(userRealm);
        return securityManager;
    }
}

5. 编写User实体类

在src/main/java目录下创建一个名为User的实体类,用于表示用户信息。我们需要为该类添加id、username和password字段,并添加相应的getter和setter方法。

@Entity
@Table(name = "users")
public class User implements Serializable {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    private String username;
    
    private String password;
    
    // 省略getter和setter方法
}

6. 编写UserService接口和实现类

在src/main/java目录下创建一个名为UserService的接口,用于定义用户相关的操作。我们需要添加一个findByUsername方法,用于根据用户名查找用户信息。

public interface UserService {
    
    User findByUsername(String username);
}

在src/main/java目录下创建一个名为UserServiceImpl的实现类,用于实现UserService接口。我们需要注入一个UserRepository实例,并在findByUsername方法中使用该实例来查询用户信息。

@Service
public class UserServiceImpl implements UserService {
    
    @Autowired
    private UserRepository userRepository;
    
    @Override
    public
举报

相关推荐

0 条评论