shiro

发布时间 2023-04-06 21:53:28作者: JohnWangzx

shiroFilter 中的 isAccessAllowed

/**

 * 这里我们详细说明下为什么最终返回的都是true,即允许访问

 * 例如我们提供一个地址 GET /article

 * 登入用户和游客看到的内容是不同的

 * 如果在这里返回了false,请求会被直接拦截,用户看不到任何东西

 * 所以我们在这里返回trueController中可以通过 subject.isAuthenticated() 来判断用户是否登入

 * 如果有些资源只有登入用户才能访问,我们只需要在方法上面加上 @RequiresAuthentication 注解即可

 * 但是这样做有一个缺点,就是不能够对GET,POST等请求进行分别过滤鉴权(因为我们重写了官方的方法),但实际上对应用影响不大

 */

Filter

 

所有的请求都会先经过 Filter,继承官方的 BasicHttpAuthenticationFilter,并且重写鉴权的方法。

* <p>

* 代码的执行流程 preHandle -> isAccessAllowed -> isLoginAttempt -> executeLogin 

 

Realm

用户验证以及权限验证的地方,用户验证多加了一个校验,就是我们当前请求的 token 中包含的时间戳与缓存中的 RefreshToken 对比,一致才验证通过。

 

现在只做了认证,还没做授权

 

Header中如果包含Authornizatioin,则需要判断鉴权,如果不包含则按游客处理