Shiro内置过滤器

匿名 (未验证) 提交于 2019-12-03 00:19:01

运行 Web 应用时,Shiro会创建一些有用的默认 Filter 实例,并自动地在 [main] 项中将它们置为可用

这些可用的默认的 Filter 实例是被 DefaultFilter 枚举类定义的(枚举的名称字段就是可供配置的名称)

  • ssl :org.apache.shiro.web.filter.authz.SslFilter
  • user :org.apache.shiro.web.filter.authz.UserFilter
  • anon :org.apache.shiro.web.filter.authc.AnonymousFilter
  • port :org.apache.shiro.web.filter.authz.PortFilter
  • rest :org.apache.shiro.web.filter.authz.HttpMethodPermissionFilter
  • authc :org.apache.shiro.web.filter.authc.FormAuthenticationFilter
  • perms :org.apache.shiro.web.filter.authz.PermissionAuthorizationFilter
  • roles :org.apache.shiro.web.filter.authz.RolesAuthorizationFilter
  • logout :org.apache.shiro.web.filter.authc.LogoutFilter
  • authcBasic :org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter
  • noSessionCreation :org.apache.shiro.web.filter.session.NoSessionCreationFilter

这些过滤器分为两组:

anon(不认证也可以访问),authcBasic, authc(必须认证后才可

访问),user

perms(指定资源需要哪些权限才可以访问),Roles, ssl,rest, port

注意 user 和 authc 不同

当应用开启了rememberMe时,用户下次访问时可以是一个user,但绝不会是authc,因为authc是需要重新认证的
user表示用户不一定已通过认证,只要曾被Shiro记住过登录状态的用户就可以正常发起请求,比如rememberMe

说白了:以前的一个用户登录时开启了rememberMe,然后他关闭浏览器,下次再访问时他就是一个user,而不会authc


下面举几个例子介绍一下(注意URLPattern写的是两颗星,这样才能实现任意层次的全匹配)

  1. /admin/**=anon
  2. /admin/user/**=authc
  3. /admin/user/**=authcBasic
  4. /admin/user/**=ssl
  5. /home=user
  6. /edit=authc,perms[admin:edit]:表示用户必需已通过认证,并拥有 admin:edit 权限才可以正常发起 /edit 请求
  7. /admin=authc,roles[admin]
  8. /admin/user/**=port[8081]
  9. /admin/user/**=rest[user]/admins/user/**=perms[user:get]或perms[user:post]
  10. /admin**=roles["admin,guest"]
  11. /admin**=perms["user:add:*,user:del:*"]:允许多个参数(逗号分隔),此时要全部通过才算通过,相当于isPermitedAll()




文章来源: Shiro内置过滤器
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!