背景:
最近在看 shiro,在搭建工程的时候突然发现一个问题,由于我的过滤器配置的是 map.put("/**", "authc"); 即对所有用户进行认证,当用户进行登录操作时,需要给用户的登录请求添加过滤,js 的请求才可以到达后台,如下所示,
map.put("/login", "anon");
map.put("/**", "authc");
在登录成功之后,我的 js 里面的 ajax 再次请求后台的方法时,shiro 并没有拦截我的请求,而是将请求通过了,我一直很想不通到底是因为什么。
解释:
我一直再不断的试验到底是什么原因。终于想明白了:如果在未登录的状态下由 js 访问后端的接口方法,由于你处于未认证的状态,所以 shiro 会将你拦截,但是当你登录成功之后,你就处于认证通过的状态,这时你访问后台的接口方法,shiro 是不会拦截你的。因为你认证通过了。