shiro中是否认证,和是否授权的不同现象以及shiro的自定义代码构成部分
shiro的自定义代码构成部分
自定义的认证过滤器
自定义的权限过滤器
加载所有的资源-权限信息
加载登录用户自己的资源,角色信息
更新重行加载权限
共享session管理器--session监听
在shiro的session用redis实现之后,可以直接拿到这个session,然后在里面设置需要传递的变量,在服务器切换的时候都可以共享。
不必另外包装一个httpsession然后这个包装的里面用redis存(shiro实现共享session即可,不必如此)。
// 当验证都通过后,把用户信息放在session里 ,这里是已经实现了session共享的情况下(自定义shiro sessionmanager)
Session session = SecurityUtils.getSubject().getSession();
session.setAttribute("userSession", user);
session.setAttribute("userSessionId", user.getId());
剩余的就是在配置文件中配置
shiro中是否认证,和是否授权的不同现象
没有认证---退出
没有权限返回空,截断请求(可以对终端时候的页面信息做一些配置控制显示)-----debug在这个方法就可看到这个代码在框架源码中的调用链
PathMatchingFilter---- return this.isFilterChainContinued(request, response, path, config);----- return this.onPreHandle(request, response, pathConfig);
public boolean onPreHandle(ServletRequest request, ServletResponse response, Object mappedValue) throws Exception {
return this.isAccessAllowed(request, response, mappedValue) || this.onAccessDenied(request, response, mappedValue);
}
url过滤器会根据有没有权限决定是否继续请求----可以对终端时候的页面信息做一些配置控制显示
public class RoleAuthorizationFilter extends AuthorizationFilter{
public boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue)
throws Excepti
{
}
}