1、概述
核心引擎搞定了,接下来的主要工作就是逐个开发 Handler 了。
常用的Handler包括授权(AuthHandler)、流量控制(TrafficControlHandler)、加解密(EncryptHandler)、安全(SecurityHandler)、压缩(ZipHandler)、序列化(KryoHandler)等。
其他外围功能还包括对调用方的管理功能,开放接口介绍网站等,不再冗述。
2、常用Handler
2.1、授权
实现一个达到实用级别的授权实现需要另开一个专题来讲,这里只讲一些基本原则,并提供一个简单的实现。
2.1.1、自定义Session
每次调用接口都传递调用方id和密码,是最简单粗暴的做法。使用定时失效的token向前走了一步。
Token 可以基于 HttpSession 实现,这种实现同Servlet API极其机密地耦合了。
我们完全可以自己实现类似Session的机制,采用 Redis 等分布式缓存中间件来实现,还自动具备了分布式属性。
代码极其简单,如下所示。
/**
* @author liuhailong2008#foxmail
*/
public class ApiSession implements Serializable {
private static final long serialVersionUID = 1055965810150154404L;
/**Session ID*/
private final String id;
/**Session创建时间*/
private long creationTime;
/**Session最后一次访问时间*/
private long lastAccessedTime;
/**Session的最大空闲时间间隔*/
private int maxInactiveInterval;
/**是否是新建Session*/
private boolean newSession;
private static final String SESSION_KEY_PREFIX = "SESS_";
//private Set<String> attrNameSet = Collections.synchronizedSet(new HashSet<String>());
private final String sessionKey ;
/**
* 创建新的Session。
* @param maxIdleSeconds
*/
public