fuint-framework/fuint-base/src/main/java/com/fuint/base/shiro/ShiroDbRealm.java

(开头部分) 3KB

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

package com.fuint.base.shiro;

import java.util.List;
import com.fuint.base.dao.entities.TDuty;
import com.fuint.base.service.Base.ShiroUserService;
import com.fuint.base.service.BaseService;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
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.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;

/**
 * shiro认证授权realm实现类
 *
 * @author fsq
 * @version $Id: ShiroDbRealm.java
 */
public class ShiroDbRealm extends AuthorizingRealm {

    private static final Logger logger = LoggerFactory.getLogger(ShiroDbRealm.class);

    @Lazy //延迟到第一次使用时候注入
    @Autowired
    private ShiroUserService shiroUserService;
    @Lazy //延迟到第一次使用时候注入
    @Autowired
    private BaseService baseService;

    /**
     * 认证回调函数,登录时调用.
     *
     * @see org.apache.shiro.realm.AuthenticatingRealm#doGetAuthenticationInfo(AuthenticationToken)
     */
    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authcToken) throws AuthenticationException {
        CaptchaUsernamePasswordToken token = (CaptchaUsernamePasswordToken) authcToken;
        return shiroUserService.createShiroUserByAccountName(token.getUsername());
    }

    /**
     * 授权查询回调函数, 进行鉴权但缓存中无用户的授权信息时调用.
     *
     * @see AuthorizingRealm#doGetAuthorizationInfo(PrincipalCollection)
     */
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
        ShiroUser shiroUser = (ShiroUser) principals.getPrimaryPrincipal();
        SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();
        authorizationInfo.setRoles(baseService.findRoles(shiroUser.getId()));
        List<TDuty> duties = shiroUser.getDuties();
        if (duties != null && duties.size() > 0) {
            for (TDuty tDuty : duties) {
                authorizationInfo.addStringPermissions(tDuty.getPermissionsName());
后面还有 28 行代码,购买后查看完整代码

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

AI 解读 AI

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

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