# SpringEL-Assert **Repository Path**: xuxiang1203/SpringEL-Assert ## Basic Information - **Project Name**: SpringEL-Assert - **Description**: SpringAOP EL表达式对方法断言校验 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-02-01 - **Last Updated**: 2024-02-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 1. 启动项目, 默认端口8080 2. 打开测试类 com.spel.SpELTest 逐一请求controller 3. 方法上的注解, 代表着校验逻辑 如下表示 调用 ValidateThrowsService.isSuperAdmin() 判断当前用户是不是Admin 调用 ValidateThrowsService.hasPermission(XXX) 判断当前用户是不是拥有XXX权限 Logical = LogicalEnum.AND 表示上面两个条件要同时满足, OR满足一个即可 ```` @BatchAssert(value = { @BaseAssert( assertType = AssertTypeEnum.PERMISSION_ASSERT, validatorBeanClass = ValidateThrowsService.class, value = "isSuperAdmin()" ), @BaseAssert( assertType = AssertTypeEnum.PERMISSION_ASSERT, validatorBeanClass = ValidateThrowsService.class, value = "hasPermission('" + UserPermissionConstant.PERMISSION_USER_QUERY + "')" ) }, Logical = LogicalEnum.AND) // AND表示,必须是管理员, 并且有查询权限,两个条件同时满足,才能访问此接口 public void XXX(){ ... } ```` 下面注解表示 调用ValidateThrowsService.hasTimeAuth(1,12)接口 ```` @BaseAssert(validatorBeanClass = ValidateThrowsService.class, value = {"hasTimeAuth(1,12)"}) public void XXX(){ ... } ```` 如果需要自定义异常,可以这么写 表示判断方法参数里面userSearchForm的属性eq_password 的长度是否大于6 否则就抛出指定异常 new AssertException("密码长度必须大于6") ```` 示例1 @BaseAssert( value = {"#userSearchForm.eq_password?.length() > 6"}, ifError = AssertException.class, errorMsg = "密码长度必须大于6" ) public Object customAuth(@RequestBody UserSearchForm userSearchForm) { return "访问成功"; } ============================================================================= 示例2 /** * 只要登录了就可以访问 */ @RequestMapping("/hasLogin") @HasPermissions(validatorBeanClass = ValidateService.class, expression = "hasLogin()", errorMsg = "傻逼,要登录了才能访问这个地址") //@BaseAssert(validatorBeanClass = ValidateThrowsService.class, expression = "hasLogin()") public Object hasLogin() { return "访问成功"; } ```` @HasPermissions 是 @BaseAssert的包装注解, 两者功能一样,只是语义不同(类似于spring的@component 和 @service) validatorBeanClass = XXXBean.class 可以自己定义 如上表示调用boolean hasLogin = ValidateService.hasLogin() 如果hasLogin 为false, 则抛出异常 new XXXException(errorMsg) 或者调用ValidateThrowsService.hasLogin() 这个方法里面,如果逻辑是false, 那么它自己会抛出异常 结束