springboot篇】十四. springboot整合shiro 下

springboot整合shiro

中国加油,武汉加油!

篇幅较长,配合右边目录观看

项目准备

  1. 本章基于springboot整合shiro 上

3 功能扩展

3.1 连接数据库

3.1.1 导druid依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.21</version>
</dependency>

3.1.2 application.properties配置数据库

# 数据库配置
mybatis.type-aliases-package=com.wpj.pojo
mybatis.mapper-locations=classpath:mapper/*.xml

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql:///nz1904-shiro
spring.datasource.username=root
spring.datasource.password=123456

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

3.1.3 写mapper和service及impl

package com.wpj.mapper;

import com.wpj.pojo.User;

public interface IUserMapper {

    /**
     * 通过用户名找用户
     * @param name
     * @return
     */
    User findUserByName(String name);
}
package com.wpj.service;

import com.wpj.pojo.User;

public interface IUserService {
    /**
     * 通过用户名找用户
     * @param name
     * @return
     */
    User findUserByName(String name);
}
package com.wpj.service.impl;

import com.wpj.mapper.IUserMapper;
import com.wpj.pojo.User;
import com.wpj.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements IUserService {

    @Autowired
    private IUserMapper iUserMapper;


    @Override
    public User findUserByName(String name) {
        return iUserMapper.findUserByName(name);
    }
}

3.1.4 写mapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wpj.mapper.IUserMapper">

    <select id="findUserByName" parameterType="String" resultType="user">
        select * from user where name = #{name}
    </select>

</mapper>

3.1.5 修改User对象及创建对应库表

package com.wpj.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable {

    private static final long serialVersionUID = 8434196542261610760L;

    private Integer id;
    private String name;
    private String pwd;
    private String salt;	// 加入盐值

}

e99a18c428cb38d5f260853678922e03 为密码123 通过MD5散列一次后得到的,盐值为abc

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) COLLATE utf8_bin DEFAULT NULL,
  `pwd` varchar(50) COLLATE utf8_bin DEFAULT NULL,
  `salt` varchar(50) COLLATE utf8_bin DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;


INSERT INTO `user` VALUES ('1', 'wpj', 'e99a18c428cb38d5f260853678922e03', 'abc');

3.1.6 修改Realm

在这里插入图片描述

3.1.7 定义一个AppConfig类

package com.wpj.config;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.context.annotation.ComponentScan;

@SpringBootConfiguration
@ComponentScan(basePackages = {"com.wpj"})
@MapperScan(basePackages = {"com.wpj.mapper"})
public class AppConfig {
}

3.1.8 启动主启动类

DataSourceAutoConfiguration可以不用排除了

package com.wpj;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

3.1.9 测试

localhost:8080/ 进入首页,然后因为没有登录进入登录页面
输入 wpj 和 123 登录成功进入首页

3.1.10 注意

如果数据库连接报错,则需要修改一下
在这里插入图片描述

发布了57 篇原创文章 · 获赞 11 · 访问量 4324

猜你喜欢

转载自blog.csdn.net/TheNew_One/article/details/104534971