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 注意
如果数据库连接报错,则需要修改一下