shiro(1)----基本概述

shiro 架构

在这里插入图片描述

  • Authentication: 身份认证/登录,是一个可扩展点,可以自定义实现;可以使用认证 策略(Authentication Strategy),即什么情况下算用户认证通过了;
  • Authorization: 权限验证,决定用户有什么样的访问权限。
  • Session Management: 用户session管理,支持非 web环境以及EJB。
  • Cryptography: 加密,保证数据安全性。
  • Web Support:Web 支持,可以非常容易的集成到Web 环境
  • Caching:缓存,例如,可缓存用户session,用户信息,拥有的角色,权限信息
  • Concurrency:Shiro 支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能 把权限自动传播过去
  • Run As:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问;
  • Remember Me:记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了

shiro 概述

在这里插入图片描述

  • Subject: 与当前应用程序交互的“用户”。“Subject”可以是一个人,但它也可以表示第三方服务,守护程序帐户,定时任务或类似的东西-基本上是当前与该软件交互的任何东西。Subject 只是一个接口,当与 SecurityManager交互时,会转换为具体的subject。
  • SecurityManager: SecurityManager shiro的核心,管理协调其内部组件,程序员一般不用理会,并且应用程序开发人员几乎所有时间都花在Subject API上。
  • Realms: realm是你的应用和shiro之间桥梁,当需要执行身份验证(登录)和授权(访问控制)时,Shiro会从一个或多个为应用程序配置的realm中查找数据内容。

shiro中默认的过滤器

如下的拦截器 都在DefaultFilter 枚举类中有说明

过滤器名称过滤描述例子
anonorg.apache.shiro.web.filter.authc.AnonymousFilter不需要登录的路径/user/signup/** = anon
authcorg.apache.shiro.web.filter.authc.FormAuthenticationFilter用户认证(登录)拦截器,如果验证不通过跳转到你配置的登录页面。主要属性:usernameParam:表单提交的用户名参数名 passwordParam:表单提交的密码参数名 loginUrl:登录页面地址 successUrl:登录成功后的跳转页面 failureKeyAttribute 登录失败错误信息存储key
authcBasicorg.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilterBasic Http 身份拦截器 主要属性:applicationName:弹出登录框显示的信息
logoutorg.apache.shiro.web.filter.authc.LogoutFilter退出拦截器 主要属性:redirectUrl:退出成功后重定向的地址
noSessionCreationorg.apache.shiro.web.filter.session.NoSessionCreationFilter阻止在请求期间创建新的会话,保证无状态。
permsorg.apache.shiro.web.filter.authz.PermissionsAuthorizationFilter权限授权拦截器,验证用户是否拥有权限例子:/user/** = perms[“user:create”]
portorg.apache.shiro.web.filter.authz.PortFilter端口拦截器
restorg.apache.shiro.web.filter.authz.HttpMethodPermissionFilterrest 风格拦截器,根据请求的HttpMethod[POST、GET、Delete]进行拦截
rolesorg.apache.shiro.web.filter.authz.RolesAuthorizationFilter角色授权拦截器,验证用户是否拥有所选角色
sslorg.apache.shiro.web.filter.authz.SslFilterssl拦截器 只有请求协议是https的才能通过,否则自动跳转到https端口
userorg.apache.shiro.web.filter.authc.UserFilter用户拦截器,用户已经身份认证/记住我的登录的都可以拦截

web环境下 默认过滤器初始化的地方 DefaultFilterChainManager

    protected void addDefaultFilters(boolean init) {
        for (DefaultFilter defaultFilter : DefaultFilter.values()) {
            addFilter(defaultFilter.name(), defaultFilter.newInstance(), init, false);
        }
    }

shiro权限校验

  • 使用perms 拦截器,对路径进行拦截,判断当前用户是否有权限
  • 使用shiro 注解的形式
  • 在页面使用shiro标签

shiro 依赖

非web环境下,仅需要slf4j-api.jar和slf4j的绑定.jars之一。Web配置还需要commons-beanutils-core.jar。可以在需要时添加基于功能的依赖项(Ehcache缓存,基于Quartz的会话验证,Spring依赖项注入等)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值