注:我是在word里写的这篇文章,然后黏贴过来的,所以截图都没有,我已将该文档上传在我的资源中,需要的同学可以去下载,谢谢支持!
利用JAAS实现简单的页面验证与授权
开发环境NetBeans7.0.1+Glassfish3.1.1+mysql5.1
1. 首先,数据库里至少要有两张表,一张存放用户登录名和密码,另一张存放用户对应的角色
2. 下面加入数据
密码为8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918,该值为admin的SHA-256加密结果
3. 在NetBeans里新建一个web项目
4. 新建一个JDBC资源,可以在NetBeans里完成,也可以在glassfish控制台完成。下面在NetBeans里操作。
右键点项目,新建,其他。Glassfish,JDBC连接池
填写相应的属性并完成操作。在服务器资源中查看glassfish-resources.xml
再右键点项目,新建,其他。选择glassfish,glassfish资源
完成操作。
5. 启动glassfish。进入控制台http://localhost:4848/。这个时候可以先验证一下刚刚建立的jdbc资源是否可用,运行一遍项目,然后再控制台选择资源->JDBC->jdbc连接池
选择刚刚建立的连接池,点击Ping按钮,如果出现Ping成功则没有问题。
选择配置->server-config->安全性
6. 展开安全性,选择领域
7. 点新建,建立安全域
完成后点击右上角确定
8. 在项目中打开web.xml,选择安全
添加安全角色,名称为数据库中的安全角色名
新建安全约束,约束名称随便。
添加web资源集合
启用安全验证约束
9. 新建登录页面login.jsp
页面中至少需要一个表单,action为j_security_check,用户名name为j_username,密码框name为j_password,其他布局可随意发挥。
10. 右键点项目,新建,其他。选择glassfish,glassfish描述符
选择安全。
将登录后的用户组映射为该角色。
11. 此时如果再次运行项目访问index.jsp,页面将自动跳转到login.jsp。
输入用户名密码,都是admin,登录,就有权限访问index.jsp了。
12. 如果想在程序中获取已经登录的用户信息。
可通过request对象的getRemoteUser()方法获得已登录用户的用户名。