您的位置:首页 > 编程语言 > Java开发

Spring security 认证-列子(1)

2013-03-12 09:27 288 查看
在写这篇文章前,在网上找了很多springsecurity方面的资料,包括它的官方文档,发现其实例子都蛮多的,但是很多例子都写的极其复杂,对以一个初学者来说还是很难看得懂得,所以本人抽点时间来写了一些例子,从简单到复杂。只希望通过本文使大家对springsecurity有大概的了解,在以后可能用到时,有所帮助。

Tomcat: apache-tomcat-6.0
<?xml version="1.0" encoding="UTF-8"?>

<!-- (1) -->

<beans:beans xmlns="http://www.springframework.org/schema/security"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:beans="http://www.springframework.org/schema/beans"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.1.xsd">

<!--(2)-->

<http auto-config='true'>

<!-- (3) -->

<intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />

<intercept-url pattern="/**" access="ROLE_USER" />

</http>

<!-- (4) -->

<authentication-provider>

<user-service>

<user name="admin" password="admin" authorities="ROLE_USER, ROLE_ADMIN" />

<user name="user" password="user" authorities="ROLE_USER" />

</user-service>

</authentication-provider>

</beans:beans>

如下是说明:

(1)声明在xml中使用Spring Security提供的命名空间

(2)http部分配置如何拦截用户请求。auto-config='true'将自动配置

几种常用的权限控制机制,包括form, anonymous, rememberMe

(3)我们利用intercept-url来判断用户需要具有何种权限才能访问对应的url资源,

可以在pattern中指定一个特定的url资源,也可以使用通配符指定一组类似的url资源。

例子中定义的两个intercepter-url,第一个用来控制对/admin.jsp的访问,第二个使用了通配符/**,

说明它将控制对系统中所有url资源的访问。

在实际使用中,Spring Security采用的是一种就近原则,就是说当用户访问的url资源满足多个intercepter-url时,

系统将使用第一个符合条件的intercept-url进行权限控制。在我们这个例子中就是,当用户访问/admin.jsp时,

虽然两个intercept-url都满足要求,但因为第一个intercept-url排在上面,所以Spring Security会使用第一个

intercept-url中的配置处理对/admin.jsp的请求,也就是说,只有那些拥有了ROLE_ADMIN权限的用户才能访问/admin.jsp

(4)user-service中定义了两个用户,admin和user。为了简便起见,我们使用明文定义了两个用户对应的密码,

这只是为了当前演示的方便,之后的例子中我们会使用Spring Security提供的加密方式,避免用户密码被他人窃取。

最最重要的部分是authorities,这里定义了这个用户登陆之后将会拥有的权限,它与上面intercept-url中定义的权限内容一一对应。

每个用户可以同时拥有多个权限,例子中的admin用户就拥有ROLE_ADMIN和ROLE_USER两种权限,这使得admin用户在登陆之后

可以访问ROLE_ADMIN和ROLE_USER允许访问的所有资源。与之对应的是,user用户就只拥有ROLE_USER权限,所以他只能访问ROLE_USER允许访问的资源,

而不能访问ROLE_ADMIN允许访问的资源

-
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: