Spring Security的一些简单理解

实践背景:

接手师兄的系统,原本系统做过权限认证。现在需要我完成与另一个系统的集成,而两个系统的用户角色等不一致,都是单独做的权限认证。所以想做一种机制,针对来自该集成系统的资源访问请求,我们的系统给他分配一个默认的权限,不需要进一步做权限控制。因为之前没有做过权限认证相关的设计,对Spring security的了解只基于demo进行实践的程度,此处可能会涉及到过滤器的配置等问题,因此深究一下其原理。

Spring security的认证规则:

1.Spring Security中每个URL都是一个资源,当系统启动的时候,Spring Security会根据配置将所有的URL与访问这个URL所需要的权限的映射数据加载到Spring security中。

2.当一个请求访问一个资源(URL)时,Spring Security会判断这个资源是否需要权限验证。如果不需要 ,那么直接进行访问即可。

3.如果这个URL需要进行权限验证,那么Spring Security会检查当前请求来源所属用户是否登录,如果没有登录,则跳转到登录页面,进行登录操作,并加载这个用户的相关信息。

相当于我在接收来自HIS的请求的时候,给他设置成默认登录状态,直接带上用户信息,这样就不需要再次进行登录了,只要是来自HIS的请求,都赋给它一个默认的用户信息,不用进行二次登录。

前台获取到用户信息,直接实例化后台用户信息,把后台也设置成登录状态,这样就不用再跳转到登录界面进行登录了。但是有个问题,我在通过controller接收请求的时候,是否已经进入权限保护的范围,如果是这样的话,设置登录状态等操作就没法进行,简单来说就是我在controller里面写分配给HIS端用户的默认登录信息的内容已经属于后台资源的一部分了,因此是否我没法在此之前进行该操作。

解决办法:1.还是默认登录到login界面。只是说核查单系统的登录操作不需要手动进行了,直接通过HIS中URL传递过来的参数进行自动登录。跳转还是按原来的操作先跳转到login界面,只是说,HIS用户的登录操作我帮他们完成了。而系统原本的用户还是需要按原本的流程进行登录。

4.如果登录,那么判断这个用户所拥有的权限是否包含访问这个资源(URL)所需要的权限,如果有则允许访问。

5.如果没有权限,那么就给出相应的提示信息。

你可能感兴趣的:(Spring Security的一些简单理解)