《精通Struts2 Web2.0 开发实战》笔记(3)

来源:互联网 发布:智能光网络 编辑:程序博客网 时间:2024/05/23 01:16

(一)基于容器的身份验证

  1. 配置容器插件(在pom.xml文件中)

    ·         <userRealm>:配置提供身份验证机制的类,包括HashJAASJDBC三种实现方式,用于保存用户验证信息(包括用户名、密码、用户拥有的角色)。

    ·         <name>:配置安全域名字,必须同web.xml中配置的一致。

  2. 配置角色权限

    方法1:在web.xml文件中

    ·         <url-pattern>:配置受保护的URL路径。

    ·         <role-name>:配置允许访问受保护资源的角色(此处角色名必须与上一步中保存的角色匹配。

    ·         身份验证机制包括:BASICFORMDIGESTCLIENT-CERT,不同机制有各自特定的配置。

    方法2:使用角色拦截器

    两种方法对比:

    同:可配置允许权限(允许指定角色访问指定的URL

    异:拦截器还可配置禁止权限(阻止指定的角色访问指定的URL

  3. 实现身份验证

    1)   web.xml文件中配置登录页面的URL

    ·         <realm-name>:安全域名字,与pom.xml<name>的值匹配。

    2)   登录jsp页面

    ·         用户名字段名字:j_username

    ·         密码字段名字:j_password

    ·         表单提交路径:/j_security_check(与容器相关)

  4. 访问角色信息

    ·         使用HttpServletRequest里保存的信息,但没有通过ServletRequestAware接口直接使用HttpServletRequest对象。

    ·         Struts2将授权分离到PrincipalProxy,通过PrincipalAware接口调用。

    ·         Jsp页面中使用OGNL表达式获取角色信息。

(二)基于ACEGI的身份验证

  1. 配置AcegiServlet过滤器和过滤器映射(在web.xml文件中)

    ·         该过滤器的顺序必须在第一个,因为过滤器的调用顺序与定义顺序一样。

    ·         过滤器映射中<url-pattern>的值应为/*,以确保所有请求都能被Acegi过滤器处理。

  2. 配置角色权限(在Acegi配置文件中)

    ·         特殊的URL模式放在一般URL模式前面。

    ·         通过配置daoAuthenticationProvider实现自定义的身份验证提供者。

    ·         参考http://www.acegisecurity.org/

  3. 实现身份验证(登录jsp页面)

    ·         用户名字段名字:j_username

    ·         密码字段名字:j_password

    ·         表单提交路径:/j_acegi_security_check

  4. 访问角色信息

    ·         创建方法级的注释@

    ·         创建拦截器,将授权信息通过被注释的方法赋给action

    ·         Jsp页面中可使用Acegi标签。

(三)自定义的身份验证

  1. 创建类级注释,用于标记受保护的action
  2. 创建拦截器

    ·         阻止非授权用户访问被注释的action

    ·         保护包的安全

    ·         添加错误消息

    ·         国际化错误消息

    ·         将未通过验证的用户重定向到登录页面

  3. 配置struts.xml文件

    ·         配置角色权限(配置拦截器/拦截器栈)

    ·         配置全局验证结果

  4. 实现身份验证

    ·         自定义用于验证的actionLogonActionLogoffAction)。

    ·         验证通过后,将角色信息保存到Http Session中。

  5. 访问角色信息

    ·         可在BaseAction中从session里获取出来,则以后的action只要继承BaseAction就可直接使用。

    ·         Jsp页面中可使用OGNL表达式获取。

原创粉丝点击