/* ================================================================== * Created [2009-4-27 下午11:32:55] by Jon.King * ================================================================== * TSS * ================================================================== * mailTo:jinpujun@hotmail.com * Copyright (c) Jon.King, 2009-2012 * ================================================================== */ package com.jinhe.tss.um.sso; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpSession; import com.jinhe.tss.core.Global; import com.jinhe.tss.core.sso.Environment; import com.jinhe.tss.core.sso.ILoginCustomizer; import com.jinhe.tss.core.sso.SSOConstants; import com.jinhe.tss.core.sso.context.Context; import com.jinhe.tss.um.permission.PermissionService; import com.jinhe.tss.um.service.ILoginService; /** * <p> * 登录后将UMS中相关用户对角色信息复制到本地应用的数据库中 * </p> */ public class FetchPermissionAfterLoginCustomizer implements ILoginCustomizer { ILoginService loginSerivce = (ILoginService) Global.getContext().getBean("LoginService"); PermissionService permissionService = (PermissionService) Global.getContext().getBean("PermissionService"); public void execute() { Long logonUserId = Environment.getOperatorId(); // 1.获取登陆用户的权限(拥有的角色) List<Object[]> userRoles = loginSerivce.getUserRolesAfterLogin(logonUserId); // 2.保存到用户权限(拥有的角色)对应表 permissionService.saveUserRolesAfterLogin(userRoles, logonUserId); // 将用户角色信息塞入到session里 List<Long> roleIds = new ArrayList<Long>(); for( Object[] urInfo : userRoles ){ roleIds.add((Long) urInfo[1]); } HttpSession session = Context.getRequestContext().getSession(); session.setAttribute(SSOConstants.USER_RIGHTS_IN_SESSION, roleIds); session.setAttribute(SSOConstants.LOGINNAME_IN_SESSION, Environment.getOperatorName()); } }