- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SpringSecurity优略只见
Spring Security优劣之我见
?
拜读了Spring Security相关帖子和Spring Security参考文档。现将我理解的Spring Security写下来和大家共享。
?
本文目的是从Spring Security能够提供的功能、以及基本原理角度分析,并不深入到如何编码。然后反过来,审查我们的软件系统需要哪些权限控制。进而评审Spring Security的适用性。
?
本文力求文字简单,概念也简单。
--------------------------------------------------------------
文章大纲:
Spring Security 如何控制权限
??? 概要
??? 与WEB系统的集成??? 控制内容??? 细粒度权限控制我们理想中的权限管理??? 客户对权限管理的需求??? 开发中遇到的难点??? 我们理想的权限管理Spring Security的评价??? 优点??? 缺点
--------------------------------------------------------------
Spring Security如何控制权限
概要
Spring使用由Filter组成的Chain,来判断权限。如下图所示:
Spring预定义了很多out-of-boxed filter供开发者直接使用。
每个Filter一般情况下(有些Filter是abstract的),都和配置文件的一个元素(有的情况下可能是属性)对应。
比如:AUTHENTICATION_PROCESSING_FILTER,对应配置文件里面的:http/form-login元素。
?
如果Spring提供的Filter不能满足系统的权限功能,开发者可以自定义Filter,然后把Filter放在某个Filter Chain的某个位置。可以替换掉原有Filter Chain的某个Filter,也可以放在某个Filter之前或者之后。
?
总之,Spring Security采用Filter Chain模式判断权限,Spring提供了一些Filter,也支持开发者自定义Filter。
与WEB系统的集成
使用Java EE的Filter(非Spring的Filter)机制,将需要权限判断的url,“牵引”给Spring的Filter Chain即可。
?
一般情况下,将所有的url都引入Filter Chain。当然也可以在web.xml配置需要权限判断的url(配置filter-mapping/url-pattern)。Spring的配置文件也支持过滤掉不需要权限判断的url(配置http/intercept-url元素)。
控制内容
Spring Security提供了如下内容的控制:
1.?????? url;
2.?????? bean method;
3.?????? http session。
?
url:可以分为需要权限判断的url,不需要权限判断的url,登录表单url。通过我对spring相关帖子和参考文档的阅读,需要权限判断的url。仅限于做角色判断,就是说判断当前用户是否具有指定的角色。
?
bean method:Spring支持对Service layer method做权限判断。通过我对spring相关帖子和参考文档的阅读,也仅限于做角色判断。配置方式有2种:
1.? 写在Java源代码里面,如:@Secured(ROLE_TELLER)(该方法只有具有TELLER角色的用户能够访问,否则抛出异常);
2.? 写在配置文件里面,如:protect method=set* access=ROLE_ADMIN /(该bean的所有set方法,只有具有ADMIN角色的用户能够访问,否则抛出异常)。
3.http session:控制一个用户名是否能重复登录,以及重复登录次数,并非重试密码次数。
?
另外,Spring Security还提供了如下一些功能:
1.?????? remember me,记住我;
2.?????? form-login登录控制;
3.?????? 多种身份认证功能;
4.?????? 用户密码加密和“salt”功能;
5.?????? http协议控制;
6.?????? 访问端口控制;
7.?????? Pre-Invocation After-Invocation。
?
remember me,记住我:还记得浏览器采用cookie记住用户名和密码自动登录吗?好像就是这个(不知道我理解错了没有,应该没有。只是我不大敢相信)。使用这个功能,开发者在登录页面,使用spring自定义的标签。
?
form-login登录控制:有
您可能关注的文档
最近下载
- 三年级语文上册习作八:那次玩得真高兴课件(共26张PPT).pptx VIP
- 六年级人教版小学英语-阅读理解专题练习(及答案).doc VIP
- 污水厂年度工作计划(模板).doc
- ECOVACS 科沃斯 净化机器人沁宝 AIRBOT Z1产品使用说明书.pdf
- 24秋人教PEP英语三年级上册 Unit 1 Making friends 单元教学课件.pptx
- 2022年防雷检测职业技能竞赛综合知识试题库大全-下(判断题部分).pdf
- 装修公司工程部品控管理:材料堆放保护规范.docx
- 2023年长沙市事业单位公开招聘考试真题.docx
- 万孚生物-市场前景及投资研究报告:POCT龙头,技术平台全覆盖,国内外双核驱动.pdf VIP
- 全数字交流伺服驱动系统KT270-H系列(V1.0)使用手册.PDF
文档评论(0)