• Shiro安全框架


    一、原理

    • subject(当前用户)
    • securityManager (管理所有用户)
    • realm(数据交互)

     

    二、添加依赖

    1. org.apache.shiro
    2. shiro-spring
    3. 1.3.2

    三、User实体类,UserService接口,UserServiceImpl实现类

    1. package com.example.demo.pojo;
    2. import com.baomidou.mybatisplus.annotation.TableName;
    3. import com.baomidou.mybatisplus.annotation.IdType;
    4. import com.baomidou.mybatisplus.annotation.TableId;
    5. import java.time.LocalDateTime;
    6. import java.io.Serializable;
    7. import lombok.AllArgsConstructor;
    8. import lombok.Data;
    9. import lombok.EqualsAndHashCode;
    10. import lombok.NoArgsConstructor;
    11. /**
    12. *

    13. * 用户信息表
    14. *

    15. *
    16. * @author Pengke
    17. * @since 2022-09-21
    18. */
    19. @Data
    20. @NoArgsConstructor
    21. @AllArgsConstructor
    22. @EqualsAndHashCode(callSuper = false)
    23. @TableName("sys_user")
    24. public class SysUser implements Serializable {
    25. private static final long serialVersionUID = 1L;
    26. /**
    27. * 用户ID
    28. */
    29. @TableId(value = "user_id", type = IdType.AUTO)
    30. private Long userId;
    31. /**
    32. * 用户账号
    33. */
    34. private String userName;
    35. /**
    36. * 手机号码
    37. */
    38. private String phonenumber;
    39. /**
    40. * 密码
    41. */
    42. private String password;
    43. }
    1. public interface SysUserService extends IService {
    2. SysUser getUserByUserName(String userName);
    3. }
    1. @Service
    2. public class SysUserServiceImpl extends ServiceImpl implements SysUserService {
    3. @Override
    4. public SysUser getUserByUserName(String userName) {
    5. SysUser one = getOne(new LambdaQueryWrapper()
    6. .eq(SysUser::getUserName, userName)
    7. );
    8. return one;
    9. }
    10. }

    四、返回结果封装

    1. package com.example.demo.utils;
    2. import lombok.AllArgsConstructor;
    3. import lombok.Builder;
    4. import lombok.Data;
    5. import lombok.NoArgsConstructor;
    6. /**
    7. * @author Administrator
    8. */
    9. @Data
    10. @Builder
    11. @AllArgsConstructor
    12. @NoArgsConstructor
    13. public class Result {
    14. /**
    15. * 成功
    16. */
    17. private boolean success;
    18. private String code;
    19. /**
    20. * 消息
    21. */
    22. private String message;
    23. /**
    24. * 结果数据
    25. */
    26. private T data;
    27. public static Result success() {
    28. return success(null);
    29. }
    30. public static Result success(T data) {
    31. return new Result<>(true, "200", "success", data);
    32. }
    33. public static Result fail(String code, String message) {
    34. return new Result<>(false, code, message, null);
    35. }
    36. }

    五、ShiroConfig配置文件

    1. package com.example.demo.config.shiro;
    2. import org.apache.shiro.mgt.DefaultSessionStorageEvaluator;
    3. import org.apache.shiro.mgt.DefaultSubjectDAO;
    4. import org.
  • 相关阅读:
    力扣刷题 day39:10-09
    Linux系统100条命令:关于Ubuntu和 CentOS 7 相同功能的不同的终端操作命令
    windows TBB的使用
    内网穿透的应用-Cloudreve搭建云盘系统,并实现随时访问
    【Pycharm 安装Django报错显示:ERROR: Failed building wheel for backports.zoneinfo】
    IDEA的日常快捷键大全
    数据结构与算法解题-20240422
    Java环形链表_leetcode141(快慢指针、set)
    Java项目:SSM社区居民户籍扶贫管理系统
    高低JDK版本中JNDI注入(上)
  • 原文地址:https://blog.csdn.net/PengK_aha/article/details/127787818