APIJSON自定义权限

前提

  • 希望来的看客是对APIJSON有一定的了解
    1. 知道各种查询
    2. 知道PUT/DELETE/POST请求写在Request表
    3. 以及知道使用Function表进行远程调用

这里只说明鉴定权限

apijson_todo_demo快速上手demo
apijson-doc 查询文档

权限鉴定

APIJSONVerifier#verifyAccess是一个鉴权的处理函数,如果角色不为UNKNOW会校验是否登陆

if (!role.equals("UNKNOWN")) {
    this.verifyLogin();
}

public void verifyLogin() throws Exception {
    if (this.visitorId == null) {
        throw new NotLoggedInException("未登录,请登录后再操作!");
    } else {
        if (this.visitorId instanceof Number) {
            if (((Number)this.visitorId).longValue() <= 0L) {
                throw new NotLoggedInException("未登录,请登录后再操作!");
            }
        } else {
            if (!(this.visitorId instanceof String)) {
                throw new UnsupportedDataTypeException("visitorId 只能是 Long 或 String 类型!");
            }

            if (StringUtil.isEmpty(this.visitorId, true)) {
                throw new NotLoggedInException("未登录,请登录后再操作!");
            }
        }

    }
}

如果角色是ADMIN会调用verifyAdmin()默认没重写会调用本身的

switch(role.hashCode()) {
    case 62130991:
        if (role.equals("ADMIN")) {
            var8 = 4;
        }
        break;
}

switch(var8) {
    case 4:
        this.verifyAdmin();
}

public void verifyAdmin() throws Exception {
    throw new UnsupportedOperationException("不支持 ADMIN 角色!如果要支持就在子类重写这个方法来校验 ADMIN 角色,不通过则 throw IllegalAccessException!");
}

自定义鉴权

Github项目:https://github.com/JYbill/APIJSON-test

Gitee项目:https://gitee.com/JYbill/apijson-test

  1. 继承APIJSONVerifier,自定义角色、自定义角色校验、自定义管理员校验
public class DemoVerifier extends APIJSONVerifier {
	public static final String TAG = "DemoVerifier";

    // 添加自定义角色
	static {
		ROLE_MAP.put("TEACHER", new Entry("", ""));
	}
    
    // 这是我表里的逻辑: 0普通用户、1老师、2管理员
	private static final int ROLE_TEACHER_CODE = 1;
	private static final int ROLE_ADMIN_CODE = 2;

	private static final String USER_CLASS_NAME = User.class.getSimpleName();
    
    // 注意返回为true就会通过校验
	@Override
	public boolean verifyAccess(SQLConfig config) throws Exception {
		// 过滤预校验
		if (config.getTable().equals("Function") && config.getMethod() == RequestMethod.HEAD ||
						config.getTable().equals("Function") && config.getMethod() == RequestMethod.GET ||
						config.getTable().equals("Access") && config.getMethod() == RequestMethod.HEAD ||
						config.getTable().equals("Access") && config.getMethod() == RequestMethod.GET ||
						config.getTable().equals("Request") && config.getMethod() == RequestMethod.GET ||
						config.getTable().equals("Request") && config.getMethod() == RequestMethod.HEAD) {
			return true;
		}

		String role = config.getRole();

		// 校验自定义角色
		switch (role) {
			case "TEACHER":
				if (!(this.visitor instanceof User)) {
					throw new IllegalArgumentException("未登录!");
				}
				if (((User)this.visitor).getRole() < 1) {
					throw new IllegalArgumentException("请勿伪造" + role + "角色");
				}
				break;
		}

		// 如果是ADMIN,LOGIN等角色,后面会校验其他已存在的角色
		return super.verifyAccess(config);
	}

	// 校验管理员
	@Override
	public void verifyAdmin() throws Exception {
		if (((User)this.visitor).getRole() < 2) {
			throw new IllegalArgumentException("请勿伪造[" + ADMIN + "]角色");
		}
	}
}

APIJSON开发效率还是蛮高的,适合那种需要快速开发中小项目。如果觉得本项目对你的学习有帮助可以点个

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
ApiPOST是一款可直接生成文档的API调试、管理工具。2.x版本大更新,支持查看并发送Cookie、文档再编辑、导出Pdf、Word、Html文档等更多功能。 ApiPost是一个支持团队协作,支持模拟POST、GET、PUT等常见请求,并可直接生成文档的API调试、管理工具。 它拥有以下功能特性: 1、文档管理 ApiPost不仅可以快速生成接口文档,还支持导出离线html、Word、Pdf格式的文档。方便您部署接口文档到您的本地甚至局域网服务器。 2、模拟登陆 支持Cookie管理,发送接口时,可以携带自定义的Cookie进行模拟登陆,从而方便测试一些需要登录才能访问的API。 3、跨平台支持 ApiPost拥有Chrome拓展插件、Window客户端、Mac客户端3大版本,软件界面清爽,使用简单,功能类似PostMAN和Rap的结合,更适合中文版的国人使用。 4、流程测试 ApiPost支持环境变量、流程测试,解决在参数依赖下的接口访问、测试问题。 版本:2.1.1 1.增加请求参数的转码功能按钮; 2.增加请求参数快速导入功能; 3.增加双击关闭标签功能; 4.修复克隆之后的定位体验,新版本直接定位到新建标签; 5.修复Get或者json请求时,流程测试的bug; 6.【重大更新】优化为空的参数不体现在文档的体验; 7.修复右侧文件夹双击会导致文件夹图标错误的bug; 8.【重大更新】增加接口标注功能; 9.【重大更新】增加响应数据的美化、原生、预览选项按钮; 10.【重大更新】优化响应参数的层级展示(不再以text-indent区分); 11.响应示例增加【简化】按钮; 12.【重大更新】文档模式的再编辑; 13.【重大更新】增加文档访问权限:开放/密码访问; 14.增加折叠请求参数按钮; 15.增加左侧新建文件夹按钮+; 16.修复参数为json时无法保存的bug; 17.增加文档再编辑处增加全局注释变量快捷键; 18.增加文档导出Word功能; 19.增加文档导出Pdf功能; 20.优化文档导出Html功能,修复Mac下可能出现的bug; 21.布局优化调整; 22.【重大更新】流程测试错误时,增加显示当时的参数按钮; 23.其他细微Bug修复 版本:2.0.8 1、增加 手动测试; 2、增加 自动化流程测试; 3、增加 升级提醒 4、增加 环境变量; 5、增加 接口参数依赖; 6、增加 自定义响应示例(成功/失败); 7、增加 接口克隆功能; 8、修复 响应码不为200时的响应显示问题; 9、修复 不规则URL的请求的问题; 10、修复 复制、粘贴快捷键不能用的问题; 11、修复 请求头的空格转换的问题; 12、修复【取消请求】按钮功能的问题; 13、修复 未保存红点的现实问题; 14、优化 请求体的保存优化。 版本:2.0.6 1、修复请求头的Cookie无法发送的Bug 版本:2.0.5 1、修复请求头无法是中文的Bug 版本:2.0.4 1、修复GET请求头的Bug; 2、修复请求头重复的Bug; 3、修复拓展使用场景(content_scripts),仅限apipost.cn下请求使用 功能特性 1、支持模拟登录状态 支持COOKIE管理,测试一些需要登录才能访问的API。 2、api结果实时展示 不仅可以返回正常的JSON格式,还可以返回程序的具体错误。 3、导出离线文档 支持导出离线文档为Word、html,部署本地服务器。 4、清晰的使用流程 使用文档丰富,更适合国人使用。扁平化的设计思路使得界面清爽,使用简单,更易上手。 支持语言:中文 (简体)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值