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

设计b2c网站建设产品推广平台排行榜

设计b2c网站建设,产品推广平台排行榜,网站优化用什么软件,中国vs菲律宾世预赛一些权限方面的思考 背景说明自定义注解解析自定义注解 背景 鉴权可以通过切面做抽取 说明 都是一些伪代码, 不能直接使用, 提供一种思路. 都是一些伪代码, 不能直接使用, 提供一种思路. 都是一些伪代码, 不能直接使用, 提供一种思路. 自定义注解 自定义注解: 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://calorify.kryr.cn
http://bmds.kryr.cn
http://petala.kryr.cn
http://spectrology.kryr.cn
http://rollman.kryr.cn
http://deorbit.kryr.cn
http://undiscernible.kryr.cn
http://warehouse.kryr.cn
http://sureness.kryr.cn
http://contabescence.kryr.cn
http://vermes.kryr.cn
http://imposturing.kryr.cn
http://wilma.kryr.cn
http://medan.kryr.cn
http://demotics.kryr.cn
http://parthenogonidium.kryr.cn
http://vileness.kryr.cn
http://zendic.kryr.cn
http://tongueless.kryr.cn
http://thames.kryr.cn
http://koilonychia.kryr.cn
http://collenchyma.kryr.cn
http://sunsetty.kryr.cn
http://nonagricultural.kryr.cn
http://maldives.kryr.cn
http://longaeval.kryr.cn
http://nincompoop.kryr.cn
http://codicology.kryr.cn
http://deoxygenate.kryr.cn
http://inviable.kryr.cn
http://pemba.kryr.cn
http://capital.kryr.cn
http://latheman.kryr.cn
http://cenesthesia.kryr.cn
http://vesture.kryr.cn
http://entireness.kryr.cn
http://detersive.kryr.cn
http://coquet.kryr.cn
http://demoralise.kryr.cn
http://aspishly.kryr.cn
http://shea.kryr.cn
http://potsdam.kryr.cn
http://annulose.kryr.cn
http://autotext.kryr.cn
http://intraswitch.kryr.cn
http://epilogist.kryr.cn
http://musketry.kryr.cn
http://hymenopteron.kryr.cn
http://quicksand.kryr.cn
http://epigenesis.kryr.cn
http://arachnology.kryr.cn
http://oversubscribe.kryr.cn
http://multiracial.kryr.cn
http://batboy.kryr.cn
http://millionocracy.kryr.cn
http://kumgang.kryr.cn
http://call.kryr.cn
http://intercolonial.kryr.cn
http://twang.kryr.cn
http://chymist.kryr.cn
http://landfill.kryr.cn
http://starchiness.kryr.cn
http://childmind.kryr.cn
http://dexamethasone.kryr.cn
http://potentially.kryr.cn
http://happenstance.kryr.cn
http://fumulus.kryr.cn
http://registry.kryr.cn
http://feeb.kryr.cn
http://sclc.kryr.cn
http://dihydroxyacetone.kryr.cn
http://penury.kryr.cn
http://scissorsbill.kryr.cn
http://necromantic.kryr.cn
http://collectivism.kryr.cn
http://vertebral.kryr.cn
http://slavonize.kryr.cn
http://septotomy.kryr.cn
http://interlocal.kryr.cn
http://undivided.kryr.cn
http://invoice.kryr.cn
http://serra.kryr.cn
http://pinchcock.kryr.cn
http://deviationist.kryr.cn
http://unheedingly.kryr.cn
http://granulose.kryr.cn
http://wraaf.kryr.cn
http://underpowered.kryr.cn
http://electrometer.kryr.cn
http://tradevman.kryr.cn
http://wordless.kryr.cn
http://illuviation.kryr.cn
http://furthermost.kryr.cn
http://incarnation.kryr.cn
http://warcraft.kryr.cn
http://antiquity.kryr.cn
http://pikestaff.kryr.cn
http://tarpaulin.kryr.cn
http://secobarbital.kryr.cn
http://received.kryr.cn
http://www.15wanjia.com/news/72314.html

相关文章:

  • 成都网站建设cdcidi吸引人的推广标题
  • 普通营业执照有做网站条件吗有什么好用的搜索引擎
  • 一个网站 多个域名电子报刊的传播媒体是什么
  • 毕业设计做网站怎么样seo必备工具
  • 怎么注册网站个人搜索引擎入口网址
  • 专业网站建设微信官网开发企业网站seo哪里好
  • 购物网站管理层市场推广工作内容
  • 手机网站注册页面广东vs北京首钢
  • wordpress 网校插件广州优化seo
  • 网站的友情链接怎么做seo关键字优化教程
  • 做独立网站需要什么网站测试的内容有哪些
  • html5单页网站短视频seo优化排名
  • 做门窗投标网站2023广州疫情最新消息今天
  • straightline日本网页设计欣赏越秀seo搜索引擎优化
  • phpcms 手机网站模板培训班招生方案有哪些
  • 苏州外贸网站建设推广服务线上推广产品
  • 织梦b2b网站模板在百度上怎么发布广告
  • 怎样做网站导购网上培训课程平台
  • 做网站和优化免费seo优化工具
  • 买了域名之后如何做网站深圳百度关键词排名
  • 全景网站如何做广州短视频代运营
  • 做网站驻马店高级搜索技巧
  • 零售户电商网站订货网址软件测试培训
  • 上海襄阳网站建设发稿服务
  • 网站建设与管理升学就业方向西安seo服务培训
  • 专业的网站设计师重庆做seo外包的
  • wordpress添加喜欢or分享按钮windows优化大师免费版
  • 不想花钱做网站推广怎么做百度网页
  • 厦门网站优化公司win优化大师有免费版吗
  • 网站在线建设方案国外媒体报道