首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >springsecurity3实现的过程

springsecurity3实现的过程

作者头像
py3study
发布2020-01-09 22:30:04
3650
发布2020-01-09 22:30:04
举报
文章被收录于专栏:python3python3

 1.在类初始化的时候,InvocationSecurityMetadataSource类就会调用loadResourceDefine()的方法,取到所用的资源对应的角色关系。(这个步骤是在tomcat容器启动的时候调用的)

  2.当用户访问某个资源时,提交的url就会被我们自定义的过滤器(MyFilterSecurityInterceptor) 拦截,进入doFilter()的方法,在调用该方法前,会执行InterceptorStatusToken token = super.beforeInvocation(fi),当执行这行代码时,会进入InvocationSecurityMetadataSource类的另一个方法getAttributes(Object object),该方法返回的是某个资源对应的权限集合(比如说/index.jsp所对应的权限是ROLE_USER),参数object可以理解为一个url。

  3.在得到某个资源对应的权限集合后,就会进入AccessDecisionManager类的decide()方法,首先得到资源的权限,然后得到用户的权限,判断用户是否具有该资源的权限,有的就放行,没的就返回登入页面或抛出一个无权限的异常。

  4.当用户通过登入页面提交表单时,进入到UserDetailsService类的loadUserByUsername()方法,并把用户名当参数传入,如果取到了用户的权限,则经过自定义的过滤器,做上面2和3的步骤。

  5.进入登入页面后,用户每当点击一个资源,都要经过过滤器拦截,判断是否具有访问该资源的权限,有的就放行,没的就跳入权限受阻的页面,这样就差不多欧了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档