Spring Security 之初体验

Spring Security 之初体验

 

Spring Security最大的作用

 

      1. 认证:通过前端传过来的userName、password,验证是否成功

      2. 授权:对login后的用户进行授权,再在对应的controller方法上加上访问权限

 

 

 

工作原理

 

       login成功后会返回一个叫SESSIONID的cookie给前端,前端每次请求的时候,都将这个cookie传给后端进行验证,看其有效性(session是否超时,服务器是否重启)。有效并且有权限就可以访问相应url,如果不行就报错。

 

 

 

优点

 

      1. 提供了一套权限框架,这套框架是可行的;

      2. 提供了很多用户身份认证功能,可以节约大量开发工作;

      3. 提供了角色判断功能,这点既是优点又是缺点;

      4. 提供了form-login、remember me等控制。

 

 

 

缺点

 

      1. 角色被“编码”到配置文件和源文件,这样最终用户就不能创建角色了。但最终用户期望自己来控制角色。因为在项目实施过程中,客户可能并不能确定有哪些角色,以及角色怎么分配给系统用户。角色大多需要等到系统上线后,才能确定。这些编码有:

          

          (1)url的权限控制,<intercept-url pattern="/**" access="ROLE_USER" />;

          (2)java方法的权限控制,@Secured("IS_AUTHENTICATED_ANONYMOUSLY");

          (3)java方法的权限控制,<protect method="set*" access="ROLE_ADMIN" />;

      

      2. RBCA这种被广泛运用的模型,没有在Spring Security体现出来;

 

      3. Spring Security没有提供好的细粒度(数据级)权限方案,提供的缺省实现维护工作量大,在大数据量情况下,几乎不可用;

      

      4. Spring Security对于用户、角色、权限之间的关系,没有提供任何一种维护界面。不过从Spring Security角度看,确实没有必要有界面。角色创建、角色和权限直接的关系,都被“编码”到配置文件和源文件了;

 

      5. Spring Security学习难度大,配置文件还是很多。我承认有很多高手,但我们也看到有很多新人加入软件开发领域。付出如此大的学习代价,获得这么一点点好处,个人觉得并不值得。

 

 

 

以后学习参考:

http://blog.csdn.net/column/details/springsecurity.html

http://www.iteye.com/blogs/subjects/spring_security

猜你喜欢

转载自youyu4.iteye.com/blog/2348846