All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.alogic.auth.DefaultPrincipalManager Maven / Gradle / Ivy

package com.alogic.auth;

import java.util.Map;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang3.exception.ExceptionUtils;
import org.w3c.dom.Element;

import com.alogic.auth.local.DefaultAuthenticationHandler;
import com.anysoft.util.Factory;
import com.anysoft.util.Properties;
import com.anysoft.util.XmlElementProperties;
import com.anysoft.util.XmlTools;
import com.logicbus.backend.Context;

/**
 * PrincipalManager缺省实现
 * 
 * 

* 在本实现中,将SessionManager和AuthenticationHandler功能分别委托给两个插件对象处理 * * @author duanyy * @since 1.6.10.10 * * @version 1.6.11.1 [20171215 duanyy]
* - 修正退出登录方法
* * @version 1.6.11.7 [20180107 duanyy]
* - 优化Session管理
* * @version 1.6.11.14 [duanyy 20180129]
* - 优化AuthenticationHandler接口
* * @version 1.6.11.22 [duanyy 20180314]
* - 增加isLocalLoginMode(是否本地登录模式)的判断
* - 增加common(扩展指令接口)
* * @version 1.6.11.30 [20180514 duanyy]
* - 增加cookies操作接口
* * @version 1.6.11.59 [20180911 duanyy]
* - 优化权限接口
* * @version 1.6.12.11 [20181206 duanyy]
* - 浏览器cookie可定制httpOnly和secure属性
* * @version 1.6.13.28 [20201218 duanyy]
* - 增加Prelogin接口
*/ public class DefaultPrincipalManager extends PrincipalManager.Abstract{ /** * Session Manager */ protected SessionManager sessionManager = null; /** * Authentication Handler */ protected AuthenticationHandler authHandler = null; @Override public void configure(Element e, Properties p) { Properties props = new XmlElementProperties(e,p); Element elem = XmlTools.getFirstElementByPath(e, "handler"); if (elem != null){ Factory f = new Factory(); try { authHandler = f.newInstance(elem, props, "module"); }catch (Exception ex){ LOG.error("Can not create authentication handler:" + XmlTools.node2String(elem)); LOG.error(ExceptionUtils.getStackTrace(ex)); } } elem = XmlTools.getFirstElementByPath(e,"session"); if (elem != null){ Factory f = new Factory(); try { sessionManager = f.newInstance(elem, props, "module",LocalSessionManager.class.getName()); }catch (Exception ex){ LOG.error("Can not create session manager:" + XmlTools.node2String(elem)); LOG.error(ExceptionUtils.getStackTrace(ex)); } } configure(props); } @Override public void configure(Properties p){ if (sessionManager == null){ sessionManager = new LocalSessionManager(); sessionManager.configure(p); LOG.info("Current session manager is null.Use default instead:" + sessionManager.getClass().getName()); } if (authHandler == null){ authHandler = new DefaultAuthenticationHandler(); authHandler.configure(p); LOG.info("Current authentication handler is null.Use default instead:" + authHandler.getClass().getName()); } //为handler设置会话管理器 authHandler.setSessionManager(sessionManager); } @Override public void setSessionManager(SessionManager sm){ // 本方法无效,采用内置的SessionManager } @Override public Session getSession(HttpServletRequest request,HttpServletResponse reponse,boolean create) { return sessionManager.getSession(request,reponse,create); } @Override public Principal getCurrent(HttpServletRequest req,HttpServletResponse res) { return authHandler.getCurrent(req,res); } @Override public Principal login(HttpServletRequest req,HttpServletResponse res) { return authHandler.login(req,res); } @Override public Principal getCurrent(Context ctx) { return authHandler.getCurrent(ctx); } @Override public Principal getCurrent(HttpServletRequest req,HttpServletResponse res,Session session) { return authHandler.getCurrent(req,res,session); } @Override public Principal getPrincipal(String app,String token,String callback) { return authHandler.getPrincipal(app,token,callback); } @Override public Principal login(Context ctx) { return authHandler.login(ctx); } @Override public void prelogin(Context ctx){ authHandler.prelogin(ctx); } @Override public boolean isLocalLoginMode(){ return authHandler.isLocalLoginMode(); } @Override public void checkPrivilege(Principal principal,Map menu){ authHandler.checkPrivilege(principal, menu); } @Override public void logout(Context ctx) { authHandler.logout(ctx); } @Override public void command(Context ctx) { authHandler.command(ctx); } @Override public void logout(HttpServletRequest request,HttpServletResponse response) { authHandler.logout(request,response); } @Override public Session getSession(String sessionId,boolean create) { return sessionManager.getSession(sessionId,create); } @Override public void delSession(String sessionId) { sessionManager.delSession(sessionId); } @Override public String getCookie(HttpServletRequest req,String name,String dft){ return sessionManager.getCookie(req, name, dft); } @Override public void setCookie(HttpServletResponse response,String name,String value,String path,int ttl){ sessionManager.setCookie(response, name, value, path, ttl); } @Override public Cookie newCookie(String name, String value, String path) { return sessionManager.newCookie(name, value, path); } @Override public void setCookie(HttpServletResponse response, Cookie cookie) { sessionManager.setCookie(response, cookie); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy