com.curiousby.baoyou.cn.shiro.SysRealm.java Source code

Java tutorial

Introduction

Here is the source code for com.curiousby.baoyou.cn.shiro.SysRealm.java

Source

/*
 * Project: springmvchibernate
 * 
 * File Created at 20161121
 * 
 * Copyright 2016 CMCC Corporation Limited.
 * All rights reserved.
 *
 * This software is the confidential and proprietary information of
 * ZYHY Company. ("Confidential Information").  You shall not
 * disclose such Confidential Information and shall use it only in
 * accordance with the terms of the license.
 */
package com.curiousby.baoyou.cn.shiro;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.apache.commons.lang.StringUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.SimpleAuthenticationInfo;
import org.apache.shiro.authc.UsernamePasswordToken;
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.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.curiousby.baoyou.cn.entity.Right;
import com.curiousby.baoyou.cn.entity.Role;
import com.curiousby.baoyou.cn.entity.User;
import com.curiousby.baoyou.cn.service.RightService;
import com.curiousby.baoyou.cn.service.RoleService;
import com.curiousby.baoyou.cn.service.UserService;

/**
 * @com.curiousby.baoyou.cn.shiro.SysRealm
 * @Type SysRealm.java
 * @Desc 
 * @author cmcc-B100036
 * @date 20161121 ?5:35:02
 * @version 
 */
@Service
public class SysRealm extends AuthorizingRealm implements InitializingBean {

    public static Map<String, Right> map = new HashMap<String, Right>();

    @Resource
    UserService userService;

    @Resource
    RightService rightService;
    @Resource
    RoleService roleService;

    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {

        String userName = (String) super.getAvailablePrincipal(principals);
        List<String> roleList = new ArrayList<String>();
        List<String> permissionList = new ArrayList<String>();
        //????
        User user = userService.find("userName", userName);
        if (null != user) {
            //User??
            if (null != user.getRoles() && user.getRoles().size() > 0) {
                //??
                for (Role role : user.getRoles()) {
                    roleList.add(role.getRoleName());
                    //Role????
                    if (null != role.getRights() && role.getRights().size() > 0) {
                        //???
                        for (Right right : role.getRights()) {
                            if (!StringUtils.isEmpty(right.getRightUrl())) {
                                permissionList.add(right.getRightUrl());
                            }
                        }
                    }
                    /*List<Right>  rights= rightService.findByRoleId(role.getId());
                    if(null!=rights && rights.size()>0){
                        //???
                        for(Right right : role.getRights()){
                     if(!StringUtils.isEmpty(right.getRightUrl())){
                         permissionList.add(right.getRightUrl());
                     }
                        }
                    }*/
                }
            }
        } else {

        }
        //???
        SimpleAuthorizationInfo simpleAuthorInfo = new SimpleAuthorizationInfo();
        simpleAuthorInfo.addRoles(roleList);
        simpleAuthorInfo.addStringPermissions(permissionList);
        return simpleAuthorInfo;
    }

    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authcToken)
            throws AuthenticationException {
        UsernamePasswordToken token = (UsernamePasswordToken) authcToken;
        User user = userService.find("userName", token.getUsername());
        if (user != null) {
            return new SimpleAuthenticationInfo(user.getUserName(), user.getPassword(), user.getUserName());
        } else {
            return null;
        }
    }

    @Override
    public void afterPropertiesSet() throws Exception {

    }

}

/**
 * Revision history
 * -------------------------------------------------------------------------
 * 
 * Date Author Note
 * -------------------------------------------------------------------------
 * 20161121 cmcc-B100036 creat
 */