我的第三周

过滤器and拦截器
实现的方式有以下几类:

①直接实现Filter,这一类过滤器只有CompositeFilter; ②继承抽象类GenericFilterBean,该类实现了javax.servlet.Filter,这一类的过滤器只有一个,即DelegatingFilterProxy;
③继承抽象类OncePerRequestFilter,该类为GenericFilterBean的直接子类,这一类过滤器包括CharacterEncodingFilter、HiddenHttpMethodFilter、HttpPutFormContentFilter、RequestContextFilter和ShallowEtagHeaderFilter;
④继承抽象类AbstractRequestLoggingFilter,该类为OncePerRequestFilter的直接子类,这一类过滤器包括CommonsRequestLoggingFilter、Log4jNestedDiagnosticContextFilter和ServletContextRequestLoggingFilter。

Filter 有如下几个种类:
① 用户授权的Filter: Filter 负责检查用户请求,根据请求过滤用户非法请求。
② 日志Filter: 详细记录某些特殊的用户请求。
③ 负责解码的Filter: 包括对非标准编码的请求解码。
④ 能改变XML 内容的XSLTFilter 等。

Filter 有如下几个用处:
① 在HttpServletRequest 到达Servlet 之前,拦截客户的HttpServletRequest 。
② 根据需要检查HttpServletRequest ,也可以修改HttpServletRequest 头和数据。
③ 在HttpServletResponse 到达客户端之前,拦截HttpServletResponse 。
④ 根据需要检查HttpServletResponse ,可以修改HttpServletResponse 头和数据。

创建一个Filter 只需两个步骤:
①创建Filter 处理类:
②在web.xml文件中配置Filter
SpringMVC 中的Interceptor 拦截请求是通过HandlerInterceptor来实现的。在SpringMVC中定义一个Interceptor主要有4种方式:
①实现Spring的HandlerInterceptor接口;
②继承实现了HandlerInterceptor接口的类,比如Spring 已经提供的实现了HandlerInterceptor 接口的抽象类HandlerInterceptorAdapter;
③实现Spring的WebRequestInterceptor接口;
④继承实现了WebRequestInterceptor的类;实现了拦截器之后,我们可以通过重写WebMvcConfigurerAdapter的addInterceptors方法来注册自己的拦截器。

实例中使用拦截器实现两个功能
①计算每一次请求的处理时间;
②并对特定时间和特定用户(数据在codis中)的请求进行拒绝;
环境:jdk 1.8 、 spring-webmvc 5.1.5.RELEASE

下周学习and预习

SpringSecurity

什么是springSecurity
springSecurity是spring组织推出的一款安全框架.
springSecurity的作用:
① 用户认证(就是判断用户有没有登录)(不够专业, 做用户登录更专业)
② 权限管理(用户登录过后, 判断用户是具体有什么权限, 是管理员还是普通用户)(更侧重)

使用规则:
①tomcat启动加载项目的web.xml, 我们项目的web.xml中需要配置spring监听器, 加载springSecrity核心配置文件
②在登录页面中, form表单必须提交到/login路径, 用户名输入框name属性值必须叫做username密码输入框的name属性值必须叫做password

优点

总体说来Spring Security具有以下几个优点:

① 提供了一套权限框架,这套框架是可行的;

② 提供了很多用户身份认证功能,可以节约大量开发工作;

③ 提供了角色判断功能,这点既是优点又是缺点;

④ 提供了form-login、remember me等控制。

其中②、④两点,对于我们中国开发者(我对国外系统不大了解),可用性并不大。我们的系统大多采用用户名/密码身份认证模式,大多公司都有可复用代码。form-login、remember me等这些功能,并不是难以开发,而且可用之处也并不多。

Shiro

Apache Shiro是一个强大且易用的Java安全框架,主要功能有身份验证、授权、安全加密和会话管理。相比较Spring Security,shiro有小巧、简单、易上手等的优点。shiro权限的操作粒度能控制在路径及按钮上,数据粒度通过sql实现。Shrio简单够用。至于OAuth,OpenID 站点间统一登录功能,现如今单点登录很多已经通过cookies实现。因此Shiro完全能够胜任平时项目的安全认证控制。

三大核心组件
Subject表示与系统交互的主体,通常情况下我们理解是用户。他包含了用户安全认证的相关授权信息。

SecurityManager则管理所有用户的安全操作。它是Shiro框架的核心,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。主要实现有:CachingSecurityManager、RealmSecurityManager、AuthenticatingSecurityManager、AuthorizingSecurityManager、SessionsSecurityManager、DefaultSecurityManager,采用装饰模式,最终的DefaultSecurityManager覆盖了其余的SecurityMananger的功能。

Realm充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会通过Realm中查询相关的用户及其权限信息。常见的Realm实现有:JDBCRealm、IniRealm、PropertiesRealm,在实际开发中通常用户的认证信息都存放在数据库中,我们可以通过JDBCRealm查询数据库认证数据,或者通过继承AuthorizingRealm自定义Realm来获取数据库认证数据(JDBCRealm也继承了AuthorizingRealm)。

Shiro 的优点

① 简单的身份认证, 支持多种数据源

② 对角色的简单的授权, 支持细粒度的授权(方法级)

③ 支持一级缓存,以提升应用程序的性能;

④ 内置的基于 POJO 企业会话管理, 适用于 Web 以及非 Web 的环境

⑤ 非常简单的加密 API

⑥ 不跟任何的框架或者容器捆绑, 可以独立运行

Spring Security 和 Apache Shiro的比较

其部分优点:

①Spring Security基于Spring开发,项目中如果使用Spring作为基础,配合Spring Security做权限更加方便。而Shiro需要和Spring进行整合。

②Spring Security功能比Shiro更加丰富,例如安全防护方面。

③Spring Security社区资源相对比Shiro更加丰富。

④如果使用的是Spring Boot,Spring Cloud的话,三者可以无缝集成。

其部分缺点:

①Shiro的配置和使用比较简单,Spring Security上手复杂些。

②Shiro依赖性低,不需要任何框架和容器,可以独立运行,而Spring Security依赖Spring容器。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值