• -------------------------------------------------------------
  • ====================================

Shiro在Web环境下集成Spring的大致工作流程

技能 dewbay 6年前 (2019-04-12) 2295次浏览 已收录 0个评论 扫描二维码

1,Shiro 提供了对Web 环境的支持,其通过一个 ShiroFilter 入口来拦截需要安全控制的 URL,然后进行相应的控制。     ①配置的 ShiroFilter 实现类为:org.springframework.web.filter.DelegatingFilterProxy 。     ②这是一个 Servlet Filter 的代理对象,它在 IOC 容器中去找实现了 Filter 接口的 bean。     ③它可以通过一个初始化参数”targetBeanName”来找到 bean,也可以通过<filter-name>找到 bean。 2,ShiroFilter 类似于 SpringMvc 中的前端控制器,是安全控制的入口点,其负责读取配置文件(如 ini 配置文件),然后判断该 URL 是否需要登陆/授权等工作。     ①在 SpringIOC 容器中配置 org.apache.shiro.spring.web.ShiroFilterFactoryBean 的时候,该 bean 的名称必须要和 ShiroFilter 的<filter-name>一致。否则在服务加载的时候会报错。因为 Shiro 会在 IOC 容器中查找和<filter-name>对应的 filter bean。          下面是一个比较基本的 Shiro 配置内容:     

Shiro在Web环境下集成Spring的大致工作流程
Shiro在Web环境下集成Spring的大致工作流程

 3,受保护的 URL 如何进行配置     ①[urls]部分的配置,其格式为:url=拦截器[参数],拦截器[参数]。     ②如果当前请求的 url 匹配[urls]部分的某个 url 模式,将会执行器配置的拦截器。     ③anon(anonymous)拦截器表示可以匿名访问。     ④authc(authencation)拦截器标识需要身份认证通过后才能访问。     ⑤logout(logout)拦截器表示登出/退出登录,它会清空shiro缓存信息。     ⑥url 模式使用 Ant 风格模式:          [1]?匹配一个字符;          [2]*匹配零个或多个字符;          [3]**匹配路径中的零个或多个路径;  4,认证/授权基本步骤     ①获取当前的 Subject,调用 SecurityUtils.getSubject();     ②判断当前用户是否已经认证,调用 Subject 的 isAuthenticated();     ③或没有被认证,则把用户名和密码封装为 UserNamePassworkToken 对象          [1]客户端提交的表单数据。          [2]提交数据到 SpringMVC 的 handler 上。          [3]获取用户名和密码。     ④执行登录,调用 Subject 的 login(AuthencationToken);     ⑤自定义 Realm 方法,从数据库中获用户安全数据,返回给 Shiro          [1]实际上需要继承 org.apache.shiro.realm.AuthencatingRealm 类(仅仅实现认证,org.apache.shiro.realm.AuthorizingRealm 可以用来认证和授权)。          [2]实现 doGetAuthenticationInfo(AuthenticationToken) 方法。     ⑥最后由 Shiro 完成密码的比对。


露水湾 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Shiro在Web环境下集成Spring的大致工作流程
喜欢 (0)
[]
分享 (0)
关于作者:
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址