发布时间:2019-08-29 07:40:28编辑:auto阅读(1435)
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.进入登入页面后,用户每当点击一个资源,都要经过过滤器拦截,判断是否具有访问该资源的权限,有的就放行,没的就跳入权限受阻的页面,这样就差不多欧了
上一篇: GNS3错误7200:无法开始Dynam
下一篇: Python学习入门基础教程(lear
47879
46443
37332
34772
29344
26007
24960
19976
19578
18074
5821°
6447°
5961°
5987°
7093°
5937°
5977°
6471°
6435°
7817°