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

长沙哪家制作网站好专业的西安免费做网站

长沙哪家制作网站好,专业的西安免费做网站,wordpress仿唯品会,萧山市seo关键词排名文章目录 前言一、定义注解annotation二、拦截角色注解1. 在拦截器哪里拦截#xff1f;2. 如何拦截角色注解#xff1f;3. 角色如何读取?4. 最后做角色校验 三、应用#xff1a;给管理员操作接口加注解四、PostMan测试最后 前言 在【7.1】管理员图书录入和修改API#xf… 文章目录 前言一、定义注解annotation二、拦截角色注解1. 在拦截器哪里拦截2. 如何拦截角色注解3. 角色如何读取?4. 最后做角色校验 三、应用给管理员操作接口加注解四、PostMan测试最后 前言 在【7.1】管理员图书录入和修改API当时预告过并没有写【校验是否是管理员】的逻辑因为是通用逻辑会单写一篇来细讲那么今天就来安排 角色权限校验是保证接口安全必备的能力有权限才可以操作所以一般对于这种通用逻辑推荐不与主业务逻辑耦合那么怎么来解耦 在SpringBoot中过滤器、拦截器、切面都可以实现统一角色校验的功能解耦为了和【3-3 】用户身份认证的拦截器方案保持一致我们采用SpringBoot拦截器Interceptor实战统一角色权限校验 使用AOP的话你会实现吗文末投票不实名让我们有更多的互动吧~~ 一、定义注解annotation 通用功能定义在tg-book-common中 我们最终实现的效果是加了Role注解以后这个接口只有管理员才能访问学生访问接口就会报错无权限 下面定义一个角色注解通过Target 指定作用于方法上。 Target({ElementType.METHOD}) Retention(RetentionPolicy.RUNTIME) public interface Role {/*** 角色id数组默认1-管理员**/int[] roleIds() default { 1 }; }定义roleIds是保留扩展性。若后面扩展出【校长】等其它角色我们可以通过int数组来任意组合角色只要拥有int数组中的任意角色id即可访问该接口。 二、拦截角色注解 1. 在拦截器哪里拦截 显然首先需要【用户身份认证】通过然后再校验角色即在AuthInterceptor的preHandle的保存至授权上下文之前AuthContextInfo.setAuthInfo(authInfo); Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {。。。省略一大堆用户身份认证代码。。。// TODO 校验角色写在这// 校验成功, 保存至认证上下文AuthContextInfo.setAuthInfo(authInfo);return true; }2. 如何拦截角色注解 可以通过将handler转成HandlerMethod以后通过getAnnotation来获取 HandlerMethod handlerMethod (HandlerMethod) handler; Role role handlerMethod.getMethod().getAnnotation(Role.class); if (role ! null) {// 走到这说明方法上加了Role}3. 角色如何读取? 前2步以后我们就拿到了当前登录的userId也拿到了接口要求的roleIds数组所以至少有两种方案 可以通过userId去查一次MySQL然后判断一下角色这种我就不实现了你可以自己去查询实现将roleId保存在token中本文实现的是另一种方案是为了扩展一下大家的思路也就是不走MySQL查询的方案。 AuthContextInfo类中增加字段来承载角色 private Integer roleId;loginByPassword中将role设置到authContextInfo.roleId authContextInfo.setRoleId(user.getRole());接着在JwtTokenProvider中定义payload的自定义字段r // payload的自定义字段r private static final String CLAIM_ROLE r;在JwtTokenProvider.create中将它保存到token的payload中 // 自定义 role .withClaim(CLAIM_ROLE, authContextInfo.getRoleId())在JwtTokenProvider.verify中将它从token中解析出来 4. 最后做角色校验 拿到了authInfo.getRoleId()还知道了接口方法要求的roleIds判断逻辑太简单了吧~ 我简单写了一下如下 // 校验角色 HandlerMethod handlerMethod (HandlerMethod) handler; Role role handlerMethod.getMethod().getAnnotation(Role.class); if (role ! null) {// 走到这说明方法上加了Roleboolean isAdmin false;for (int roleId : role.roleIds()) {if (authInfo.getRoleId().equals(roleId)) {isAdmin true;break;}}if (!isAdmin) {log.info([403]无权限, token{}, token);response.setStatus(HttpServletResponse.SC_FORBIDDEN);// 别忘了返回falsereturn false;} }三、应用给管理员操作接口加注解 在实现了通用校验逻辑以后接下来就是如何应用了 其实就是加Role注解 下面对管理员录入和修改图书接口加了注解其它接口同理~~ 四、PostMan测试 使用role0的账号调用管理员API返回403 使用管理员账号则会正常执行就不做截图了另外别忘了提交Git 最后 想要看更多实战好文章还是给大家推荐我的实战专栏–《基于SpringBootSpringCloudVue前后端分离项目实战》由我和 前端狗哥 合力打造的一款专栏可以让你从0到1快速拥有企业级规范的项目实战经验 具体的优势、规划、技术选型都可以在《开篇》试读 订阅专栏后可以添加我的微信我会为每一位用户进行针对性指导 另外别忘了关注我天罡gg 发布新文不容易错过 https://blog.csdn.net/scm_2008
http://wiki.neutronadmin.com/news/267660/

相关文章:

  • 旅游自媒体网站怎么做学校网站群建设设计
  • 企业网站备案材料搭建网站的方案
  • 专业网站设计的公司价格设计产品
  • 手机企业网站多少钱标志网
  • 泾川建设路网站株洲seo优化高手
  • 网站 二级域名南京安居建设集团网站
  • 个人做排行网站江苏建设教育网官网入口
  • 网站开发流程有几个阶段桂林设计单位资质升级网站
  • 电影网站制作自我介绍网页设计代码
  • 网站建设项目延期验收申请莱芜论坛莱芜话题吕金梦
  • 茂名仿站定制模板建站一套完整的室内设计图
  • 单位建设网站的意义网站开发技术概况
  • 阅文集团旗下哪个网站做的最好ftp 转 wordpress
  • 河南城乡建设网站网站建设方案策划书前言
  • python适合大型网站开发吗wordpress传输失败
  • 网站建设的总结少女免费观看完整电视电影
  • 广州做护肤品的网站河南省人事考试网
  • 网站开发需要提供哪些东西东阿聊城做网站的公司
  • 大连哪家网站做的好南山区
  • 贸易公司网站制作做心理咨询可以在哪些网站发贴
  • 网站建设预付款如何付wordpress 判断用户
  • 网站排名软件包年做网站简单
  • 网站建设费用做无形资产怎么做饲料电商网站
  • 上海广告公司招聘信息网站页面优化方法
  • 中国建筑集团网站建设企业网站步骤
  • 花市小说网站那里进网站主题包括
  • 微网站开发协议html简单网页代码课程表
  • 淮安网站建设工作室网站开发哪一种语言好
  • 石家庄免费网站设计网店代运营哪个好
  • 用ps怎么做网站网站开发公司需要那些硬件设备