学习spring security3的一点理解
断断续续看了spring security3 好几周,总体感觉xml的配置有点复杂,关于它的工作原理与流程也看了好久才明白一点点。
主要还是这边文章给予的帮助,链接:http://www.blogjava.net/youxia/archive/2008/12/07/244883.html。
据我的理解,大概原理是:通过一系列filter过滤器过滤请求信息,其中包括是否登陆的认证等。
我猜想它的大概流程是,
用户请求--
检查是否登陆--
如果没登陆--
进入登陆页面--
如果登陆,把该用户所有权限加载到session,这里的权限可以是菜单的url,也可以是页面的按钮或者超链接--
当用户登陆后点击某个资源时,会去session中判断该资源是否存在,如果不存在,则提示权限不够--
如果存在就通过。
如果是这样,则先不管是否有权限,在web页面会把所有资源都列出来,当请求该资源时才去验证。
而实际当中,一般,我们会在用户登陆后,如果用户有相应的权限才列出相应的资源,如目录、按钮、超链接等,而不是全部列出。这样可以让用户减少一些不必要的操作。
所以,本人觉得spring security3方案不够合理。
可以自己实现,简单一点的安全无非是,1、是否登陆 2、是否能看到相应菜单 3、是否能看到页面中特殊按钮或超链接。
1、2点可以自己写filter实现,3点可以用自定义标签实现。
这就是我所想,具体没有实践过,觉得理论上行得通。