GZMachinesWeb/.svn/pristine/d3/d3e621051c6cb03d7caf35d701f...

58 lines
2.1 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.bonus.core.jwt;
import org.apache.shiro.authz.UnauthorizedException;
import org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter;
import com.bonus.core.StringHelper;
import io.jsonwebtoken.Claims;
import java.util.Date;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class JwtFilter extends BasicHttpAuthenticationFilter {
@Override
protected boolean isAccessAllowed(ServletRequest servletRequest, ServletResponse servletResponse, Object mappedValue) {
HttpServletResponse response = (HttpServletResponse) servletResponse;
response.setContentType("application/pdf");
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Allow-Headers", "Authorization");
response.setHeader("Access-Control-Max-Age", "0");
HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;
// 自定义JWT验证逻辑
String token = httpRequest.getHeader("Authorization");
if (StringHelper.isNotEmpty(token) && token.startsWith("Bearer ")) {
token = token.substring(7); // 去掉"Bearer "
JwtUtil jwtUtil = new JwtUtil();
Claims claims = jwtUtil.parseToken(token);
if (claims == null || claims.getExpiration().before(new Date())) {
throw new UnauthorizedException("Token已过期或无效");
}else{
return true;
}
}else{
return false;
}
// 如果验证通过返回true否则返回false
}
@Override
protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception {
// 验证失败处理逻辑
// ...
// 你可以在这里设置响应状态码、响应体等
return false;
}
}