1 Star 0 Fork 21

hwp / dobbinfw-support

forked from dobbinsoft / dobbinfw-support 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
01.session.md 2.37 KB
一键复制 编辑 原始数据 按行查看 历史
dobbinsoft 提交于 2021-12-05 15:08 . [doc] 组件文档

1. 简介

绝大部分的系统,都需要登录,Java servlet内置的session缓存在jvm中的,对于“无状态”的集群服务来说,就不适用,所以dobbinfw默认使用redis实现来保存用户会话(session)

2. 接口

package com.dobbinsoft.fw.core.util;
public interface ISessionUtil<U extends IdentityOwner, A extends PermissionOwner> {

    public void setUser(U userDTO);

    public U getUser();

    public void setAdmin(A adminDTO);

    public A getAdmin();

    public Class<U> getUserClass();

    public Class<A> getAdminClass();

    public boolean hasPerm(String permission) throws ServiceException;

}
类型 解释
接口 IdentityOwner 表示拥有ID的一个实例, U extends IdentityOwner, 此处U表示用户的类
接口 PermissionOwner 表示拥有权限的一个实例, A extends PermissionOwner,此处A表示管理员类
方法 getUserClass 获取用户类的 class 对象,方便反序列化
方法 hasPerm 判断当前会话中,管理员是否拥有某个权限点

接口中的方法均可在业务系统中使用,通常我们业务系统只用,getUser,getAdmin获取当前登录的用户、管理员

3. 默认实现

core包中默认提供redis实现,实现类为 com.dobbinsoft.fw.core.util.SessionUtil 若无特殊需求,直接使用即可。

4. 使用方法

4.1. 继承BaseService(推荐)

public class VipOrderServiceImpl extends BaseService<UserDTO, AuthAdminDTO> implements VipOrderService {
	public Object prepay(Long templateId, String ip, Long userId) throws ServiceException {
    	...
        orderRequest.setOpenid(sessionUtil.getUser().getWxMpOpenId());
        ...
    }
}

4.2. 手工注入ISessionUtil

@Autowired
private ISessionUtil sessionUtil;

5. 写自己的实现类

例如,您用的是memcached等常见,需要自己去实现会话保存方式,您可以自我实现ISessionUtil接口。并提高装配优先级即可。

@Component
@Primary
public class MySessionUtil<U extends IdentityOwner, A extends PermissionOwner> implements ISessionUtil<U, A> {
	.... impl
}
1
https://gitee.com/huangweipeng888/dobbinfw-support.git
git@gitee.com:huangweipeng888/dobbinfw-support.git
huangweipeng888
dobbinfw-support
dobbinfw-support
master

搜索帮助