前提
调用登录接口后 生成token 根据token去调用方法,无token时无法调用
重点讲述无token时如何实现无法调用
加入一个全局配置
@Component // 标注Spring管理的Bean,使用@Component注解在一个类上,表示将此类标记为Spring容器中的一个Bean。
public class TokenFilter implements Filter {
@Resource // 自定义获取token的工具
UserUtil userUtil;
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
String url = request.getRequestURI();
// 自定义拿取token里面数据的方法 可使用自己写的获取token进行替换
UserDto user = userUtil.getUser();
// 写入不用token也可以进行访问的方法的url
List<String> urlList = new ArrayList<>();
urlList.add("/login");
urlList.add("/aaa/info-list");
//放行接口
if(urlList.contains(url)){
filterChain.doFilter(servletRequest, servletResponse);
}
else{
if(null == user){
ReturnResult.error("没有token");
}
else{
filterChain.doFilter(servletRequest, servletResponse);
}
}
}
}
衍生
1.token的安全性
在token不进行验证的情况下容易被伪造token进行访问
最简易的处理方式:
else{
// 加入登录验证的方法进行验证
// 例如: 该方法作用时验证是否能正常登录
boolean b= login(user.name,user.password);
if(b)
{
filterChain.doFilter(servletRequest, servletResponse);
}else{
ReturnResult.error("该帐号不存在");
}
}