Shiro安全框架之SpringBoot工程实践(二)

简介

  上篇文章说了下在 SpringBoot 项目中整合 Shiro 来对用户进行认证和授权,实际上就是使用拦截器的方式来实现的。那么这篇文章说一下另一种实现方式–基于注解。

一、修改接口

在接口方法上加上相应的注解(这里以 home 方法举例)

    //使用shiro注解鉴权
    //@RequiresPermissions()  -- 设置访问此方法必须具备的权限
    //@RequiresRoles() -- 设置访问此方法必须具备的角色
    //如果权限信息不匹配,则抛出异常
    @RequiresPermissions("user-home")
    @RequestMapping(value = "/user/home")
    public String home() {
        return "访问个人主页成功";
    }  

二、添加异常处理类

按照之前基于拦截器实现,如果权限或角色不匹配,会做相应的跳转。那如果基于注解实现的话,如果不匹配则会抛出异常,所以我们需要添加一个异常处理类做统一的异常处理。

/** 自定义的公共异常处理器 1.声明异常处理器 2.对异常统一处理 */
@ControllerAdvice
public class BaseExceptionHandler {

  @ExceptionHandler(value = AuthorizationException.class)
  @ResponseBody
  public String error(
      HttpServletRequest request, HttpServletResponse response, AuthorizationException e) {
    return "未授权";
  }
}

你可能感兴趣的:(认证机制)