spring boot 前后端分离整合shiro(二)自定义realm

spring boot 前后端分离整合shiro(二)自定义realm

想使用shiro我们需要自定义一个realm,先看看shiro relam的继承关系
在这里插入图片描述
我们关注两个类,一个是AuthenticatingRealm,用来认证;一个是AuthorizingRealm,用来授权。然后AuthorizingRealm又继承了AuthenticatingRealm,所以我们只要继承AuthorizingRealm就既有授权又有认证了。
在这里插入图片描述
继承之后需要实现两个方法,分别用于授权和认证(这两个方法名字很像,不要搞混了),然后就在这两个方法里写我们自己的认证授权。
修改实体类
用户拥有角色,角色拥有权限,而用户又可以直接拥有某个权限,所以给UserInfo添加两个list。顺便序列化,添加序列化id,之后继承redis、配置remenberMe需要。
UserInfo

package com.example.demo.entity;

import lombok.Data;

import java.io.Serializable;
import java.util.List;

@Data
public class UserInfo implements Serializable {
   

    private static final long serialVersionUID = -482049523211701500L;

    private Integer userId;

    private String userName;

    private String loginName;

    private String password;

    private Integer gender;

    private List<Role> roleList;

    private List<Permission> permissionList;

}

Role

package com.example.demo.entity;

import java.util.List;

public class Role {
   
    private Integer roleId;

    private String roleName;

    private String description;

    private List<Permission> permissionList;
}

编写UserInfoService

public interface UserInfoService {
   

    /**
     * 查询用户的基本信息,不包括角色、权限信息
     * @param loginName
     * @return
     */
    UserInfo findUserInfoByLoginName(String loginName);

    /**
     * 查询用户的信息,包括角色、权限信息
     * @param userInfo
     * @return
     */
    UserInfo findUserAllInfoByUserId(UserInfo userInfo);
}

impl

public class UserInfoServiceImpl implements UserInfoService {
   

    @Autowired
    private UserInfoMapper userInfoMapper;

    @Autowired
    private RoleMapper roleMapper;

    @Autowired
    private PermissionMapper permissionMapper;

    @Override
    public UserInfo findUserInfoByLoginName(String loginName) {
   
        return userInfoMapper.selectUserInfoByLoginName(loginName);
    }

    @Override
    public UserInfo findUserAllInfoByUserId(UserInfo userInfo) {
   
        userInfo.setRoleList(roleMapper.selectRolesByUserId(userInfo.getUserId()));
        userInfo.setPermissionList(permissionMapper.<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值