当前位置: 首页 > news >正文

徐州建筑工程招投标网站云南省建设厅定额网站

徐州建筑工程招投标网站,云南省建设厅定额网站,建e网室内设计网登录,哈尔滨公司网站建设多少钱一些权限方面的思考 背景说明自定义注解解析自定义注解 背景 鉴权可以通过切面做抽取 说明 都是一些伪代码, 不能直接使用, 提供一种思路. 都是一些伪代码, 不能直接使用, 提供一种思路. 都是一些伪代码, 不能直接使用, 提供一种思路. 自定义注解 自定义注解: Permission …

一些权限方面的思考

  • 背景
  • 说明
  • 自定义注解
  • 解析自定义注解

背景

鉴权可以通过切面做抽取

说明

都是一些伪代码, 不能直接使用, 提供一种思路.
都是一些伪代码, 不能直接使用, 提供一种思路.
都是一些伪代码, 不能直接使用, 提供一种思路.

自定义注解

自定义注解: Permission

@Documented
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
public @interface Permission {Member.Role [] roles();Type type();enum Type {/*** 项目类型*/PROJECT,/*** 团队类型*/TEAM,/*** 系统管理类型*/SYSTEM}class Member {enum  Role {/*** 角色001*/ROLE_001,/*** 角色002*/ROLE_002}}
}

解析自定义注解

伪代码实现: PermissionAspect

@Aspect
@Component
// @DependsOn({"springContextUtil"})
@Order(2)
@Slf4j
public class PermissionAspect {@Pointcut("@annotation(Permission)")private void annotationPointCut() {}@Around("annotationPointCut()")public Object before(ProceedingJoinPoint joinPoint) throws Throwable {RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();if (!(requestAttributes instanceof ServletRequestAttributes)) {throw new ClassCastException();}ServletRequestAttributes attributes = (ServletRequestAttributes) requestAttributes;HttpServletRequest request = attributes.getRequest();Signature signature = joinPoint.getSignature();if (!(signature instanceof MethodSignature)) {throw new ClassCastException();}MethodSignature methodSignature = (MethodSignature) signature;Method method = methodSignature.getMethod();// 获取当前访问人信息UserContext.UserInfo userInfo = UserContext.getInstance().getCurrentUser();if (userInfo == null) {throw new Exception();}// 如实是SuperAdmin直接放行// TODOPermission annotation = method.getAnnotation(Permission.class);// 方法配置的角色Permission.Member.Role[] roles = annotation.roles();// 方法指定的类型Permission.Type type = annotation.type();// 核心校验逻辑permissionCheck(request, roles, type, userInfo);return joinPoint.proceed();}/*** 人员角色鉴权** @param request 请求* @param permittedRoles 配置的授权角色数组* @param type 配置的类型* @param userInfo 当前用户信息*/private void permissionCheck(HttpServletRequest request, Permission.Member.Role[] permittedRoles, Permission.Type type, UserContext.UserInfo userInfo) throws Exception {boolean hasPermission = false;// TODO 只需要校验
//        List<Role> roleList =  xxx.getMemberRole(uuid, spaceId);
//        hasPermission = CollectionUtil.containsAny(currentMemberRoles, Arrays.asList(permittedRoles));
//        if (!hasPermission) {
//            // "没有权限"
//            throw new Exception();
//        }}/*** // TODO 伪代码: 模拟用户上下文*/@Datastatic class UserContext {UserInfo currentUser;private UserContext(){}public static UserContext getInstance() {return null;}class UserInfo {}}
}
http://www.yayakq.cn/news/204995/

相关文章:

  • 云南网站建设首选公司那个网站教我做美食最好
  • 易语言做网站源码邯郸信息港房屋出售
  • 网站推送怎么做网站留言发送到qq邮箱
  • 网站制作技术视频网站如何建设
  • 网站建设中的定位设想wordpress改中文
  • 最好的汽车科技网站建设新农村建设评论网站
  • 如何学会建网站通辽网站设计
  • 鞍山软件制作平台谷歌seo网站怎么做产品分类
  • 申请网站怎么申请网站后台制作表格
  • seo职业培训班影视网站怎么做优化
  • weex做网站用wordpress 登录界面
  • 本地怎样上传自己做的网站上海企业网站建设公司名
  • 手机网站的模板下载软件学ui wordpress模板
  • 90设计网站兼职怎么样淘宝客单页网站程序
  • 国外优秀vi设计网站那里网站建设好
  • 哪个网站可以免费下载ppt模板网站开发毕业设计文档
  • 如何自己做彩票网站深圳公司网站设计
  • 电子商务网站的建设收益南京高新区规划建设局网站
  • 自己可以申请网站做外卖吗wordpress优化教程
  • 一个人可做几次网站备案移动互联网时代欧莱雅全渠道营销模式研究
  • django 网站开发视频个人简历生成器
  • 建广告网站需要多少钱python基础教程完整
  • 网站模板信息不存在北京seo优化厂家
  • 移动网站开发的视频下载深圳网络营销全网推广
  • mvc做网站装修设计公司简介
  • 服装定制网站源码网站怎样添加友情链接
  • 怎么做服务器网站下载链接集运网站建设
  • pythone网站开发海宁做网站
  • 二手手表回收网站seo应用领域
  • 怎么制作网站教程网站域名分析