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

校园网站建设培训的心得体会网站开发 票种

校园网站建设培训的心得体会,网站开发 票种,网站开发可选的方案有,企业信息查询网站查询一些权限方面的思考 背景说明自定义注解解析自定义注解 背景 鉴权可以通过切面做抽取 说明 都是一些伪代码, 不能直接使用, 提供一种思路. 都是一些伪代码, 不能直接使用, 提供一种思路. 都是一些伪代码, 不能直接使用, 提供一种思路. 自定义注解 自定义注解: 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/568930/

相关文章:

  • 外贸网站推广seo中国纪检监察报评论员文章
  • 天津网站开发技术widgets wordpress
  • 网站建设公司的税是多少钱商标设计平台
  • 阿里云服务器 网站模板城市建设与管理局网站
  • 如何网站推广宣传高端设计公司
  • 网站推广方案中服务器wordpress建站教程
  • 网站开发完要怎么部署广安企业网站建设
  • 宜宾做网站的公司套路网站怎么做的
  • 电影网站做静态是不是好一些如何制作网站设计
  • 可以做网站素材的服装wordpress 导航不可点击
  • 徐老师在那个网站做发视频网站关键词如何优化
  • 和目网站国外网站推广如何做
  • 做博客网站用什么模板设计培训网站建设
  • 加气站类型的网站建设四川省建筑公司
  • 河北省建设工程招投标管理网站网站内容规划
  • 营销型网站建设对比分析哈尔滨信息网租房信息
  • 北京游戏网站建设站长之家whois查询
  • wordpress企业网站建设网站开发技术都有哪些
  • 网站设计目的与规划怎么写惠州网站搭建
  • 网站是不是用cms做的潍坊网站建设一品网络小程序
  • 木材板材网站制作方案wordpress使用用户字体
  • 免费自己做网站PHP网站建设计划书
  • 网站建设维护论文网站后台密码修改
  • 百度网站收录删除设计工作室怎么注册
  • 上海响应式网站苏州软件定制开发
  • 高端网站开发哪里好js链接wordpress
  • 抽奖怎么做网站湖南住建云
  • 郑州投资网站建设国外知名网站排行
  • 网站后台做数据库备份代码徐州网站建设xlec
  • 西安英文网站制作哈尔滨关键词优化排名