一、原理
- subject(当前用户)
- securityManager (管理所有用户)
- realm(数据交互)

二、添加依赖
三、User实体类,UserService接口,UserServiceImpl实现类
package com.example.demo.pojo;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = false)
public class SysUser implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "user_id", type = IdType.AUTO)
private String phonenumber;
public interface SysUserService extends IService {
SysUser getUserByUserName(String userName);
public class SysUserServiceImpl extends ServiceImpl implements SysUserService {
public SysUser getUserByUserName(String userName) {
SysUser one = getOne(new LambdaQueryWrapper()
.eq(SysUser::getUserName, userName)
四、返回结果封装
package com.example.demo.utils;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
public static Result success() {
public static Result success(T data) {
return new Result<>(true, "200", "success", data);
public static Result fail(String code, String message) {
return new Result<>(false, code, message, null);
五、ShiroConfig配置文件
package com.example.demo.config.shiro;
import org.apache.shiro.mgt.DefaultSessionStorageEvaluator;
import org.apache.shiro.mgt.DefaultSubjectDAO;