1.系统启动时会登记FilterSecurityInterceptor.objectDefinitionSource(获取访问被访问的资源所需要的权限)--->实现类FactoryBean类的getObject() ,返回一个包含(键) RUL和(值)LIST
<包含功能id信息>
的键值对LinkedHashMap。objectDefinitionSource 2.用户第一次访问网站时(SESSION创建时),会将未登录用户菜单项放入HttpSessionConstants.SAN_USER_FUNCTION_MENU_MAP
,默认选中第一个菜单项放入 HttpSessionConstants.SAN_SELECTED_MENUS_ARR。 3.用户在登录时会调用ValidationCodeAuthenticationFilter过滤器,同时也是将用户所属菜单信息放入HttpSessionConstants.SAN_USER_FUNCTION_MENU_MAP中。 4.每一次资源请求都会执行整理显示菜单的过滤器ShowMenusFilter,主要负责从HttpSessionConstants.SAN_USER_FUNCTION_MENU_MAP中获取当前选中的功能项,并将其存入 HttpSessionConstants.SAN_SELECTED_MENUS_ARR数组,该数组成员最多三个,分别代表某一层中被选中的那一个功能项。 5.dao方式设置用户权限,就是每一个用户都有一个UserDetails,UserDetails里面包含一个权限数组GrantedAuthority[],具体到系统就是一些FunctionMenuId. 6. 疑点: 1.FunctionMenuEO.popedomCtrlUrls存放的是些URL,作用。。。 RequestKey key = new RequestKey(functionUrlExpression);//匹配所有URL String[] strArrFunctionPopedom = functionPopedom.toArray(new String[0]); ConfigAttributeDefinition definition = new ConfigAttributeDefinition(strArrFunctionPopedom); functionPopedomMap.put(key, definition); GrantedAuthority[]
Spring Security流程
最新推荐文章于 2024-09-21 00:43:01 发布