Spring Security3 实践

阅读更多

Spring Security还是很强大的,即支持粗粒度的访问控制,还能支持精确到web元素的的控制。

首先,spring配置中添加对security的支持:

其中定义了角色ROLE_ADMIN和ROLE_USER都能访问所有资源,但是只有ROLE_ADMIN能访问基于url为/jsp/admin/* 的资源。

如果form-login不做配置,则如果访问被拒绝的时候,会跳转到spring提供的一个login form。

form-login中 login-processing-url 配置的路径必须和web form中提交的url一致。


其中user-service配置了两种:

1.被注释掉的是基于jdbc的,这需要在数据库中创建几张表:

mysql> desc user_t;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id_f | int(11) | NO | PRI | NULL | auto_increment |
| name_f | varchar(100) | YES | | NULL | |
| password_f | varchar(32) | YES | | NULL | |
| status_f | int(11) | YES | | 1 | |
+------------+--------------+------+-----+---------+----------------+

mysql> desc role_t;
+----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+----------------+
| id_f | int(11) | NO | PRI | NULL | auto_increment |
| name_f | varchar(100) | YES | | NULL | |
| status_f | int(11) | YES | | 1 | |
+----------+--------------+------+-----+---------+----------------+

mysql> desc user_role_t;
+--------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+----------------+
| id_f | int(11) | NO | PRI | NULL | auto_increment |
| user_f | varchar(100) | NO | | | |
| role_f | varchar(100) | NO | | | |
+--------+--------------+------+-----+---------+----------------+

2.第二种基于配置文件的用户名密码管理,密码是md5加密的

下面是login form:

Login for Contact

${param.error=="t"?"authentication failed!":"" }

如果直接访问某个未授权的资源,会弹回这个登录页面,密码验证成功之后,跳转到之前访问的资源页面。

如果想指定web中某个按钮或者链接只在登录者具有admin权限的时候显示,可以这样:

welcome, logout admin
下面是使用到的标签申明:

<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %> <%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %> <%@ taglib uri="http://www.springframework.org/security/tags" prefix="se" %>

如果想使用https协议访问admin相关资源,可以这样:

首先,在修改security配置:

然后,修改tomcat配置文件server.xml


Tomcat6.0.35 security connection(https) 配置


你可能感兴趣的:(Spring Security3 实践)