搭建環境見: SpringBoot整合Shiro 一:搭建環境
shiro配置類見: SpringBoot整合Shiro 二:Shiro配置類
整合Mybatis
添加Maven依賴
mysql、druid、mybatis
lombok是可選項,方便寫實體類
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version> <optional>true</optional> </dependency>
實體類
User
package com.zy.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor public class User { private int id; private String name; private String pwd; }
數據庫

application.properties
配置mybatis
mybatis.type-aliases-package=com.zy.pojo
mybatis.mapper-locations=classpath:mapper/*.xml
Mapper
UserMapper
package com.zy.mapper; import com.zy.pojo.User; import org.apache.ibatis.annotations.Mapper; import org.springframework.stereotype.Repository; @Mapper @Repository public interface UserMapper { User queryUserByName(String name); }
UserMapper.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.zy.mapper.UserMapper"> <select id="queryUserByName" parameterType="String" resultType="User"> select * from user where name=#{name}; </select> </mapper>
service
UserService
package com.zy.service; import com.zy.pojo.User; public interface UserService { User queryUserByName(String name); }
UserServiceImpl
package com.zy.service; import com.zy.mapper.UserMapper; import com.zy.pojo.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class UserServiceImpl implements UserService{ @Autowired UserMapper userMapper; @Override public User queryUserByName(String name) { return userMapper.queryUserByName(name); } }
UserRealm
因為整合了Mybatis,所以使用數據庫來進行認證
AuthenticationInfo
//認證 @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException { System.out.println("執行了=>認證doGetAuthenticationInfo"); UsernamePasswordToken token = (UsernamePasswordToken) authenticationToken; //用戶名+密碼 User user = userService.queryUserByName(token.getUsername()); if (user == null) { return null; } //密碼認證,shiro做 return new SimpleAuthenticationInfo("", user.getPwd(), ""); }
controller不用變
測試
登錄

成功

存在安全隱患,后續可以通過加密操作保障安全
