Java tutorial
/** * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright 2017 yangxiaobing, 873559947@qq.com * * This file is part of contentManagerSystem. * contentManagerSystem is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * contentManagerSystem is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with contentManagerSystem. If not, see <http://www.gnu.org/licenses/>. * * contentManagerSystem * ??????. * contentManagerSystem??????? * ?????GPL3????. * GPL???COPYING * ?contentManagerSystemGPL?? * http://www.gnu.org/licenses/ * * - Author: yangxiaobing * - Contact: 873559947@qq.com * - License: GNU Lesser General Public License (GPL) * - source code availability: http://git.oschina.net/yangxiaobing_175/contentManagerSystem */ package com.autumnframework.common.shiroconfig.realm; import com.autumnframework.common.dao.bomapper.PluginMapper; import com.autumnframework.common.model.po.Plugin; import com.autumnframework.common.model.po.Resource; import com.autumnframework.common.model.po.User; import com.autumnframework.common.service.impl.ResourceServiceImpl; import com.autumnframework.common.service.impl.UserServiceImpl; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.shiro.authc.*; import org.apache.shiro.authz.AuthorizationException; 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.annotation.Autowired; import org.springframework.context.annotation.Lazy; import java.util.List; /** * @author Junlan Shuai[shuaijunlan@gmail.com]. * @date Created on 10:51 2017/9/2. */ public class ShiroDbRealm extends AuthorizingRealm { private Log log = LogFactory.getLog(ShiroDbRealm.class); @Autowired @Lazy private UserServiceImpl userService; @Autowired @Lazy private ResourceServiceImpl resourceService; @Autowired @Lazy private PluginMapper pluginMapper; /** * ??? * * @return * @throws AuthenticationException */ @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { // if (!super.isAuthenticationCachingEnabled()) { // super.setCachingEnabled(authenticationCachingEnabled); // } UsernamePasswordToken userToken = (UsernamePasswordToken) token; String username = userToken.getUsername(); if (StringUtils.isEmpty(username)) { log.error("???:??"); throw new AccountException("??"); } // ???? User user = userService.selectUserByloginName(username); if (user == null) { throw new AccountException("?"); } log.debug("authenticationCachingEnabled:" + super.isAuthenticationCachingEnabled()); SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(user, user.getPassword(), getName()); if (null != info) { log.info("?:??:" + user.getUser_login_name()); return info; } return null; } /** * ??? * * @param principals * @return */ @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { // if (!super.isAuthenticationCachingEnabled()) { // super.setCachingEnabled(authenticationCachingEnabled); // } if (principals == null) { throw new AuthorizationException("Principal?"); } User user = (User) getAvailablePrincipal(principals); log.info("??????:" + user.getUser_login_name()); log.info("load user information:" + user.getUser_login_name()); SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); List<Resource> resUserList = resourceService.selectResListByUserId(user.getId()); for (Resource resUser : resUserList) { info.addStringPermission(String.valueOf(resUser.getId())); } List<Plugin> pluginList = pluginMapper.selectPluginByUserId(user.getId()); for (Plugin plugin : pluginList) { info.addStringPermission(String.valueOf(plugin.getId())); } return info; } /** * ??. */ // public void clearAllCachedAuthorizationInfo(){ // log.info("?"); // Cache<Object, AuthorizationInfo> cache = getAuthorizationCache(); // if (cache != null){ // for (Object key : cache.keys()) { // cache.remove(key); // } // } // } }