• 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.
  • 相关阅读:
    PySpark特征工程(I)--数据预处理
    什么是物联网智慧公厕?
    1016 部分 A+B 【PAT (Basic Level) Practice (中文)】
    Java项目:SSH电影在线售票管理系统
    Unity之创建第一个2D游戏项目
    JS中0 == ‘‘ ture还是false
    Android - Service
    【面试经典150 | 栈】简化路径
    JAVA该怎么学习,到公司会学的一样吗
    CSS3 的选择器、盒子模型、过渡、渐变、旋转、转换
  • 原文地址:https://blog.csdn.net/PengK_aha/article/details/127787818