java架构之过滤器监听使用场景

shiro、security认证用的过滤器较多

  1. 禁止浏览器缓存所有动态页面(资源)
    1. response.setDateHeader("Expires",-1);

response.setHeader("Cache-Control","no-cache"); 

response.setHeader("Pragma","no-cache"); 

              设置为-1就是不缓存,如果设置为时间,表示缓存多久,需要实现Filter接口

  1. 实现url级别的权限判断(权限放行)
    1. 使用shiro过滤器判断url连接配置,常用的几种过滤器:

Anon->anonymousFilter、任何请求都返回true

authc->formAuthenticationFilter、如果是登录请求,则执行登录操作,否则保存请求连接跳转到登录请求界面。执行登录:executelogin方法创建token获取subject对象,执行login最后到realm查询数据库做比较

perms->permissionAuthorizationFilter判断权限

roles->rolesAuthorizationFilter授权

user->userFilter获取subject中存储的username实体对象

logout->logoutFilter使用subject退出登录

 

    1. 使用security的资源服务器
阻止加用户冒充真实用户,所以需要authentication认证
阻止真实用户访问不该访问的页面,需要authorization授权
阻止真实用户与网站之间传输的信息被窃取,需要encryption加密
继承ResourceServerConfigurerAdapter类,通过http设置自定义认证和授权

默认的格式:

http.authorizarequests().antMatchers().antMatchers().access().anyrequest().authenticated().and().formlogin().and().httpBasic()

  1. 使用过滤来处理多种登录(集成登录)

 

集成登录,其实就是将账号登录和验证码登录集成在一起,通过

过滤器-》接口-》抽象类-》账号登录实现类-》验证码四层结构

 

 

过滤器:继承onceperrequestfilter为每个请求过滤url,为/oauth/token的请求就设置集成登录信息,后置处理中执行处理集成认证方法,不是所有请求都有集成登录

 

接口:处理集成认证、预处理、是否支持集成认证类型、认证结束后执行

 

抽象类:实现接口,处理集成认证、预处理、是否支持集成认证类型、认证结束后执行

 

账号登录实现类:继承抽象类,主要处理自定义集成认证,可以将前后台区别开

 

验证码实现类:预处理中验证验证码

 

认证服务器AuthorizationServerConfigurerAdapter的configure方法也需要自定义一个userDetailsService,注入IntegrationAuthenticator调用处理集成认证方法,返回需要的UserDetails用户信息
 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值