第一种方法 自定义页面
没有授权时,自动进入403controller
//拦截错误(403)信息
@Configuration
public class ErrorPageConfig implements ErrorPageRegistrar {
@Override
public void registerErrorPages(ErrorPageRegistry registry) {
ErrorPage errorPage = new ErrorPage(HttpStatus.FORBIDDEN,"/403");
registry.addErrorPages(errorPage);
}
}
@RequestMapping(value = "/403")
public String forbidden(){
return "403";
}
html页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>自定义403错误页面</title>
</head>
<body>
<P style="font-size: 15px;color: red">您无权访问该界面~~~</P>
</body>
</html>
页面效果
第二种 方法 自定义 handler
@Configuration
public class UserAuthAccessDeniedHandler implements AccessDeniedHandler {
/**
* 返回数据为json格式
* @param request
* @param response
* @param e
*/
@Override
public void handle
(HttpServletRequest request,HttpServletResponse response,AccessDeniedException e){
ResultUtil.responseJson(response,ResultUtil.resultCode(403,"未授权"));
}
}
resultUtils类
/**
* 返回结果工具类
* @Author Sans
* @CreateTime 2019/9/28 10:50
*/
@Slf4j
public class ResultUtil {
// Logger log=LoggerFactory.getLogger(ResultUtil.class);
/**
* 私有化构造器
*/
private ResultUtil(){}
/**
* 使用response输出JSON
* @Author Sans
* @CreateTime 2019/9/28 11:23
* @Param resultMap 数据
* @Return void
*/
public static void responseJson(ServletResponse response, Map<String, Object> resultMap){
PrintWriter out = null;
try {
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json");
out = response.getWriter();
out.println(JSON.toJSONString(resultMap));
} catch (Exception e) {
log.error("【JSON输出异常】"+e);
}finally{
if(out!=null){
out.flush();
out.close();
}
}
}
/**
* 返回成功示例
* @Author Sans
* @CreateTime 2019/9/28 11:29
* @Param resultMap 返回数据MAP
* @Return Map<String,Object> 返回数据MAP
*/
public static Map<String, Object> resultSuccess(Map<String, Object> resultMap){
resultMap.put("message","操作成功");
resultMap.put("code", 200);
return resultMap;
}
/**
* 返回失败示例
* @Author Sans
* @CreateTime 2019/9/28 11:31
* @Param resultMap 返回数据MAP
* @Return Map<String,Object> 返回数据MAP
*/
public static Map<String, Object> resultError(Map<String, Object> resultMap){
resultMap.put("message","操作失败");
resultMap.put("code",500);
return resultMap;
}
/**
* 通用示例
* @Author Sans
* @CreateTime 2019/9/28 11:35
* @Param code 信息码
* @Param msg 信息
* @Return Map<String,Object> 返回数据MAP
*/
public static Map<String, Object> resultCode(Integer code,String msg){
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("message",msg);
resultMap.put("code",code);
return resultMap;
}
}
SecurityConfig配置
@Autowired
private UserAuthAccessDeniedHandler userAuthAccessDeniedHandler;
//配置没有权限自定义处理器
http.exceptionHandling().accessDeniedHandler(userAuthAccessDeniedHandler);
页面效果
这辈子坚持与不坚持都不可怕,怕的是独自走在坚持的道路上!!! | |
---|---|
欢迎加入技术群聊