您当前的位置: 首页 > 

java持续实践

暂无认证

  • 1浏览

    0关注

    746博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

黑马十次方项目day06-13之删除user验证admin权限

java持续实践 发布时间:2019-02-16 13:46:11 ,浏览量:1

文章目录
      • Controller层
      • Service
      • 测试

Controller层

在UserController中,删除用户的方法如下

/**
	 * 删除
	 * @param id
	 */
	@RequestMapping(value="/{id}",method= RequestMethod.DELETE)
	public Result delete(@PathVariable String id ){
		userService.deleteById(id);
		return new Result(true,StatusCode.OK,"删除成功");
	}
Service

在service层, 对token的验证进行了一系列的操作,具体的代码如下

     /**
	 * 删除
	 * @param id
	 */
	public void deleteById(String id) {
        String header = request.getHeader("Authorization");
        if (StringUtils.isBlank(header)) {
            //如果获取的Authorization头为空 那么抛出异常, 而不是直接return,因为这是service层
            throw new RuntimeException("权限不足!");
        }
        if (!header.startsWith("Bearer ")) {
            //判断, 如果该请求头不是以Bearer加空格开头的,那么也是权限不足的
            throw new RuntimeException("权限不足!");
        }
        //获取token. 从第七位截取,因为前面的是Bearer
        String token = header.substring(7);

        //解析token的过程可能会抛出异常,因此使用try catch
        try {
            //解析token
            Claims claims = jwtUtil.parseJWT(token);

            //获取角色信息
            String roles = (String) claims.get("roles");

            //判断角色是否为空,或者是不是admin角色
            if (roles == null || !roles.equals("admin")) {
                //如果角色为空,或者不是admin角色,那么抛出异常,权限不足
                throw new RuntimeException("权限不足!");
            }
        } catch (RuntimeException e) {
            //解析token的过程抛出异常, 也代表权限不足
            //异常可能的原因是token过期等等
            throw new RuntimeException("权限不足!");
        }
        //上面的权限信息验证完成后, 进行用户的删除
        userDao.deleteById(id);
	}
测试

启动tensquare_user项目. 在postman中进行测试. 首先执行管理员的登录操作, 获取token如下 eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiIxMDg5ODU1MTIzNTc4MDMyMTI4Iiwic3ViIjoiYWRtaW4iLCJpYXQiOjE1NTAyODcwMDYsInJvbGVzIjoiYWRtaW4iLCJleHAiOjE1NTAyOTA2MDZ9.zN100XyoUNjKaGnyzVYmuKCb2hk7z9278O6ylFt9-AM 接着进行user的删除操作. 在数据库中,存在user的id如下 在postman中发送如下的delete请求 http://localhost:9008/user/1089866410982772736 在Authorization中, 选择Bearer Token 在后面的值中, 填写上token 最终的效果是在header中, 会带上该token . key为Authorization value为Bearer 加上空格和token 执行该请求,响应数据为删除成功,代表生成成功删除

关注
打赏
1658054974
查看更多评论
立即登录/注册

微信扫码登录

0.0381s