《精通Struts2 Web2.0 开发实战》笔记(3)
来源:互联网 发布:智能光网络 编辑:程序博客网 时间:2024/05/23 01:16
(一)基于容器的身份验证
- 配置容器插件(在pom.xml文件中)
· <userRealm>:配置提供身份验证机制的类,包括Hash、JAAS、JDBC三种实现方式,用于保存用户验证信息(包括用户名、密码、用户拥有的角色)。
· <name>:配置安全域名字,必须同web.xml中配置的一致。
- 配置角色权限
方法1:在web.xml文件中
· <url-pattern>:配置受保护的URL路径。
· <role-name>:配置允许访问受保护资源的角色(此处角色名必须与上一步中保存的角色匹配。
· 身份验证机制包括:BASIC、FORM、DIGEST、CLIENT-CERT,不同机制有各自特定的配置。
方法2:使用角色拦截器
两种方法对比:
同:可配置允许权限(允许指定角色访问指定的URL)
异:拦截器还可配置禁止权限(阻止指定的角色访问指定的URL)
- 实现身份验证
1) 在web.xml文件中配置登录页面的URL
· <realm-name>:安全域名字,与pom.xml中<name>的值匹配。
2) 登录jsp页面
· 用户名字段名字:j_username
· 密码字段名字:j_password
· 表单提交路径:/j_security_check(与容器相关)
- 访问角色信息
· 使用HttpServletRequest里保存的信息,但没有通过ServletRequestAware接口直接使用HttpServletRequest对象。
· Struts2将授权分离到PrincipalProxy,通过PrincipalAware接口调用。
· Jsp页面中使用OGNL表达式获取角色信息。
(二)基于ACEGI的身份验证
- 配置Acegi的Servlet过滤器和过滤器映射(在web.xml文件中)
· 该过滤器的顺序必须在第一个,因为过滤器的调用顺序与定义顺序一样。
· 过滤器映射中<url-pattern>的值应为/*,以确保所有请求都能被Acegi过滤器处理。
- 配置角色权限(在Acegi配置文件中)
· 特殊的URL模式放在一般URL模式前面。
· 通过配置daoAuthenticationProvider实现自定义的身份验证提供者。
· 参考http://www.acegisecurity.org/
- 实现身份验证(登录jsp页面)
· 用户名字段名字:j_username
· 密码字段名字:j_password
· 表单提交路径:/j_acegi_security_check
- 访问角色信息
· 创建方法级的注释@。
· 创建拦截器,将授权信息通过被注释的方法赋给action。
· Jsp页面中可使用Acegi标签。
(三)自定义的身份验证
- 创建类级注释,用于标记受保护的action
- 创建拦截器
· 阻止非授权用户访问被注释的action
· 保护包的安全
· 添加错误消息
· 国际化错误消息
· 将未通过验证的用户重定向到登录页面
- 配置struts.xml文件
· 配置角色权限(配置拦截器/拦截器栈)
· 配置全局验证结果
- 实现身份验证
· 自定义用于验证的action(LogonAction、LogoffAction)。
· 验证通过后,将角色信息保存到Http Session中。
- 访问角色信息
· 可在BaseAction中从session里获取出来,则以后的action只要继承BaseAction就可直接使用。
· Jsp页面中可使用OGNL表达式获取。
- 《精通Struts2 Web2.0 开发实战》笔记(3)
- 《精通Struts2 Web2.0 开发实战》笔记(2)
- 《精通Struts2 Web2.0 开发实战》笔记(1)
- 精通Struts2:Web2.0开发实战
- 《精通Struts2 Web2.0 开发实战》错误纠正
- 学习日志:精通struts2 Web2.0开发实战
- 实战Web2.0
- web2.0开发用到的一些笔记
- 《实战WEB2.0》我喜欢
- web2.0的开发
- WEB2.0开发平台
- 精通IOS开发笔记一(2015.4.3)
- Spring 入门实例 简易登录系统(精通Spring+4.x++企业应用开发实战 学习笔记一)
- Spring boot入门实例 简易登录(精通Spring+4.x++企业应用开发实战 学习笔记二)
- python入门与精通,python开发实战(一)
- Java Web2.0架构开发与项目实战.学习路经图 java web 2.0技术交流群
- 实战Web2.0网站性能调优
- 《精通struts2实用教程》学习笔记-01
- Oracle经验集
- C#中委托如何使用?
- Linux 静态路由
- OnCreateClient学习总结
- Windows 7 64位版本的内存错误导致蓝屏死机(Blue Screen to Death)
- 《精通Struts2 Web2.0 开发实战》笔记(3)
- Report
- linus 其实是 windows 的 fan ...
- [软件项目]怎样做好软件项目验收工作
- C# 格式化字符串 String.Format
- Dump学习
- 一个23设计模式的搞笑解释
- Repeater嵌套实现产品分类导航
- Ext 3.0新增内容系列文章之二:Ext.data.Writer简介