最近项目中比较喜欢在前端用html,这样直接把页面贴进去方便好多,并且html响应也比较快,但是对于html权限这块,应用拦截器可以很简单的实现。
直接贴代码
public class MyInterceptor implements HandlerInterceptor {
private Logger logger=Logger.getLogger(MyInterceptor .class);
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//请求的路径
String url = request.getServletPath().toString();
logger.info("url:" + url);
//1、静态资源直接放行html img css js
if (request.getServletPath().contains(".")) {
return true;
}
//2、放行登录请求
if (request.getServletPath().endsWith("login")) {
return true;
}
//3、下载pdf放行 .pdf下载
if (request.getServletPath().endsWith("download")) {
return true;
}
//4、如果用户已经登录,从Header中获取Authorization
String authorization = request.getHeader("Authorization");
//5 判断token是不是空
if (authorization == null) {
return false;
}
//这里token可以根据个人爱好,随便使用任何加密算法来实现
String token="xxxxxxxx";
//6、验证token是否为真实, 这里验证token签名 根据特殊秘钥 一般我们签名当前最火的是redis
if (token.equals(authorization)) {
return true;
}
//7非法请求 即这些请求需要登录后才能访问
Response baseResponse = new Response();
baseResponse.setCode("403");
baseResponse.setMessage("权限不够");
response.setContentType("text/json;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(baseResponse);
return false;
}