搭建環境見: SpringBoot整合Shiro 一:搭建環境html
shiro配置類見: SpringBoot整合Shiro 二:Shiro配置類java
mysql、druid、mybatismysql
lombok是可選項,方便寫實體類spring
<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>
Usersql
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; }
配置mybatis數據庫
mybatis.type-aliases-package=com.zy.pojo
mybatis.mapper-locations=classpath:mapper/*.xml
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); }
<?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>
package com.zy.service; import com.zy.pojo.User; public interface UserService { User queryUserByName(String name); }
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); } }
由於整合了Mybatis,因此使用數據庫來進行認證apache
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不用變mybatis
測試app
登陸
成功
存在安全隱患,後續能夠經過加密操做保障安全