src/main/java/com/sums/shiro/CustomerRealm.java

(开头部分) 3KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

package com.sums.shiro;


import cn.hutool.core.util.ObjectUtil;
import com.sums.entity.Member;
import com.sums.entity.Permission;
import com.sums.entity.Role;
import com.sums.service.MemberService;
import com.sums.service.PermissionService;
import com.sums.utils.ApplicationContextUtil;
import com.sums.utils.LoginMemberUtils;
import com.sums.utils.MyCacheUtils;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.*;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.authz.SimpleAuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.util.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.util.ObjectUtils;

import java.util.Collections;
import java.util.List;
/**
 * 自定义Shiro的Realm*/
public class CustomerRealm extends AuthorizingRealm {
    private final Logger logger = LoggerFactory.getLogger(this.getClass());
    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
        String principal = (String) authenticationToken.getPrincipal();
        logger.info("登录验证:{"+principal+"}");
        MemberService service = (MemberService) ApplicationContextUtil.getBean("memberServiceImpl");
        Member member = service.getOneAllById(principal);
        if(ObjectUtil.isEmpty(member)){
            throw new UnknownAccountException("用户名错误");
        }
        for (Role role : member.getRoles()) {
            if (role.getRoleId()==6) {
                Collections.reverse(member.getRoles());
            }
        }
        MyCacheUtils.online(member.getFaculty()+member.getDepartment());

        Subject subject = SecurityUtils.getSubject();
        Member m = new Member();
        BeanUtils.copyProperties(member,m);
        m.setPassword("");
        m.setSalt("");
        subject.getSession().setAttribute(LoginMemberUtils.getSessionId(),m);

        if (!ObjectUtils.isEmpty(member)){
            return new SimpleAuthenticationInfo(member.getMeId(),
                    member.getPassword(),
                    new MyByteSource(member.getSalt()),
                    this.getName());
        }
后面还有 30 行代码,购买后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。