为tomcat页面设置访问权限(BASIC认证)
在web应用中,对页面的访问控制通常通过程序来控制,流程为:登录 -> 设置session -> 访问受限页面时检查session是否存在,如果不存在,禁止访问
对于较小型的web应用,可以通过tomcat内置的访问控制机制来实现权限控制。采用这种机制的好处是,程序中无需进行权限控制,完全通过对tomcat的配置即可完成访问控制。
为了在tomcat页面设置访问权限控制,在项目的WEB-INFO/web.xml文件中,进行如下设置:
1
2
6 webAuthentification
7
8 index.html
9 index.htm
10 index.jsp
11 default.html
12 default.htm
13 default.jsp
14
15
16
17 admin
18 /views/admin/*
19
20
21 admin
22
23
24
25
26 user
27 /views/user/*
28
29
30 user
31
32
33
34
35 BASIC
36 TOMCAT BASIC认证
37
38
39
40 admin
41
42
43 user
44
45
其中,中指定受限的url,可以使用通配符*,通常对整个目录进行访问权限控制。
中指定哪些角色可以访问指定的url,在中可以设置一个或多个角色名。
使用的角色名来自tomcat的配置文件${CATALINA_HOME}/conf/tomcat-users.xml。
中设置登录方式,的取值为BASIC或FORM。如果为BASIC,浏览器在需要登录时弹出一个登录窗口。如果为FORM方式,需要指定登录页面和登录失败时的提示信息显示页面。
在${CATALINA_HOME}/conf/tomcat-users.xml中添加下面的 角色和用户
1
2
3
4
5
6
7
如上,共2个角色admin和 user。
3个用户,admin在角色admin和user下,system在admin角色下,user在user角色下。
我的测试工程有2个文件webAuthentification/views/admin/index.jsp和webAuthentification/views/user/index.jsp,用来测试admin和user这2个角色。
部署到tomcat,然后启动tomcat,并打开浏览器,输入http://localhost:8080/webAuthentification/views/admin/index.jsp,回车。
此时浏览器会弹出一个窗口提示你输入用户名和密码,如下:
用户名和密码分别输入admin/123456,确定。
访问admin/index.jsp页面Ok,页面显示:
Hello,Admin!!!
auth:Basic YWRtaW46MTIzNDU2
user:admin
pass:123456
那访问user/index.jsp呢?
页面显示:
Hello,user!!!
因为admin用户同时拥有admin和user的角色,所以都可以访问。
关闭浏览器,打开admin/index.jsp,输入system/system,
页面显示:
Hello,Admin!!!
auth:Basic c3lzdGVtOnN5c3RlbQ==
user:system
pass:system
再访问user/index.jsp:
页面显示:
HTTP Status 403 - Access to the requested resource has been denied
因为system用户没有user角色。
当然了,user用户就只能访问user/index.jsp。
附admin.jsp:
1
2
4
5
6
7
8 Admin Index Page
9
10
11 Hello,Admin!!!
12
13
23 auth:
24 user:
25 pass:
26
27
文章参考http://www.blogjava.net/asktalk/archive/2005/07/23/8221.html
页:
[1]