导航:首页 > 净水问答 > shiro权限过滤过滤器定义

shiro权限过滤过滤器定义

发布时间:2025-07-20 10:09:09

1. shiro过滤器/* = authc把自己写的都拦截了,走了上面的拦截器后还是会被/*拦截

我也碰到这种情来况了,,自,发现filters.put("authc", filter_Authc());这种方式注入filter的时候,拦截顺序会失效,,,要改成new xx()这种方式才可以filters.put("authc", new Filter_Authc());

2. Shiro中的filter

DefaultFilter

shiro中提供的默认filter

FilterChainManager

通过配置创建对应的filterChain

Shiro通过此配置可初始化FilterChainManager中的filterChain,结构为 url ->filter列表

SpringShiroFilter

入口filter,拦截所有请求,通过请求的url匹配到对应的filterChain,然后通过Chain对请求进行,认证或者授权的处理

OncePerRequestFilter

OncePerRequestFilter 用于防止多次执行 Filter;也就是说一次请求只会走一次拦截器链;

另外提供 enabled 属性,表示是否开启该拦截器实例

实现了 doFilter 方法,提供了抽象方法 doFilterInternal

在doFilter中验证当前的Filter有没有执行过,如果已经执行过一次或者当前filter被禁用,则直接执行下一个Filter。如果没有执行过则执行 doFilterInternal 方法

AbstractShiroFilter

创建Subject,绑定subject到当前线程,根据url获取filterChain并执行filterChain

通过请求的url来匹配FilterChainManager中的FilterChain,这个方法会返回一个 ProxiedFilterChain

ProxiedFilterChain

存储了tomcat的Filter 和shiro内部的filter

shiro内部的过滤器执行完后会切换到tomcat的过滤器继续执行

默认filter

除了LogoutFilter,其他都继承了AdviceFilter

AdviceFilter

AdviceFilter 提供了 AOP 风格的支持,类似于 SpringMVC 中的 Interceptor:

权限验证在preHandle中实现

PathMatchingFilter

PathMatchingFilter 提供了基于 Ant 风格的请求路径匹配功能及拦截器参数解析的功能,如

/admin roles[admin,user] ”自动根据 “,” 分割,解析成 /admin -> [admin,user] 存入 appliedPaths

实现了 preHandle 方法,通过请求的url匹配url对应的权限,解析权限串 调用子类的 onPreHandle 对权限进行处理

AnonymousFilter

提供匿名访问功能,实现了 onPreHandle 直接返回true,所以配置 anon 的url任何人都可以访问

AccessControlFilter

提供了资源访问控制的基础功能

实现了 onPreHandle ,这里拆分出了

isAccessAllowed (是否允许访问)和 onAccessDenied (访问被拒绝时)这两个方法供子类实现

AuthenticationFilter

实现了 isAccessAllowed 方法,验证用户是否已经登录,没有登录将被拒绝

FormAuthenticationFilter

继承自 AuthenticationFilter 只有用户登录过后才能通过

实现了 onAccessDenied 方法,如果请求的地址是登录地址,这里会尝试自动登录,否则跳转到登录页面

BasicHttpAuthenticationFilter

提供了基于 HttpBasic认证的方式

AuthorizationFilter

实现了 onAccessDenied 方法,如果没有认证通过,则跳转到登录或者认证失败的页面

对用户所访问资源的权限进行认证

HttpMethodPermissionFilter

将HTTP请求的方法(例如GET、POST等)转换为相应的动作并构造一个相应的权限

如get 被转换为 read,put 转换为 update,post转换为create等

权限配置:/users perms[users]

请求: get /users

将会验证 用户是否拥有users:read权限

RolesAuthorizationFilter

验证用户是否用对对应的角色

UserFilter

实现了 isAccessAllowed onAccessDenied 方法,验证用户是否登录过,如果验证未通过则跳转到登录页面

3. springMvc+shiro做权限管理,页面上的静态资源,样式图片等没有出现,用几种方式过滤试过,还是不行

正常情况是不会出现这样的,shiro对于静态资源的处理,不用特殊配置。

只需要在shiroFilter过滤器filterChainDefinitions项中增加一个静态资源处理规则就可以,例如允许/css/开头的资源匿名访问,只需要这样一句配置就足矣。

/css/** = anon

配置完成后,未登录就可以在浏览器中直接访问css下的资源,新项目用的shiro,简单而又实用的权限框架。

阅读全文

与shiro权限过滤过滤器定义相关的资料

热点内容
锅炉除垢剂可以用蜡 浏览:83
树脂吊坠一般多少钱 浏览:341
柠檬除垢剂使用注意事项 浏览:729
农村污水处理站及管网工程可研 浏览:170
国产超滤饮水机 浏览:406
腌制辣椒的废水怎么处理 浏览:753
污水1吨水消耗多少电量 浏览:569
奥得奥空气净化器怎么用 浏览:885
喝红酒为什么加纯水 浏览:162
吉林污水设备费用是多少 浏览:500
深基坑雨污水如何防护 浏览:97
523li燃油滤芯在什么位置 浏览:814
污水井盖为什么有很多洞 浏览:413
污水治理有哪些名词 浏览:811
耐高温乙烯基树脂供应商 浏览:701
污水处理中DMF系统 浏览:455
污水处理设备应做哪些检查 浏览:688
污水处理工证书主要用于哪些行业 浏览:323
污水管扣除检查井 浏览:997
浙江联水水处理设备有限公司 浏览:981