@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Integer id;
private String name;
private String pwd;
}
6.编写mapper(即Dao)
@Repository
@Mapper
public interface UserMapper {
User queryUserByName(String name);
}
7.编写操作数据库的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.example.demo.mapper.UserMapper">
<!--<![CDATA[在这里写增删改查的语句]]>-->
<!--<![CDATA[你的注释]]>-->
<select id="queryUserByName" resultType="User" parameterType="String">
select * from user where name = #{name}
</select>
</mapper>
8.编写service接口,和service实现类
package com.example.demo.service;
import com.example.demo.pojo.User;
public interface UserService {
User queryUserByName(String name);
}
实现类
@Service
public class UserServiceImpl implements UserService {
@Autowired
UserMapper userMapper;
@Override
public User queryUserByName(String name) {
return userMapper.queryUserByName(name);
}
}
9.在认证中连接真实的数据库
//自定义UserRealm 需要extends AuthorizingRealm
public class UserRealm extends AuthorizingRealm {
@Autowired
UserServiceImpl userService;
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
System.out.println("执行了=>授权 doGetAuthorizationInfo");
return null;
}
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
System.out.println("执行了=>认证 doGetAuthorizationInfo");
UsernamePasswordToken userToken = (UsernamePasswordToken)authenticationToken;//强制转换成登录的UsernamePasswordToken
//连接真实数据库
User user = userService.queryUserByName(userToken.getUsername());
if (user == null) {
return null;
}
//可以加密 MD5 MD5盐值加密
//密码认证
return new SimpleAuthenticationInfo("",user.getPwd(),"");
}
}