7.5.2 显示用户身份验证信息
在上一小节中,我们给RoadRantz应用程序为通过身份验证的用户添加了一个欢迎消息。为简单起见,该消息被设置为“Welcome Motorist!”。那是一个好的开端,但是我们希望通过显示当前用户的登录名而不是“Motorist”,来使得该应用程序更具个性化。
幸运的是,当前用户的登录信息通常在从该用户的Authentication.getPrincipal()方法返回的那个对象中。我们需要的只是一种在JSP中访问该重要对象的便利方法。那就是<authz:authentication>标签的目的所在。
<authz:authentication>标签把从Authentication.getPrincipal()返回的那个对象的属性呈递给JSP输出。Authentication.getPrincipal()通常返回Spring Security的org.acegisecurity. userdetails.UserDetails接口的一个实现,包括一个getUsername()方法。因此,要想显示UserDetails对象的username属性,我们需要做的只是添加下列<authz:authentication>标签:
这里的operation属性有一点使人迷惑,似乎表明它的目的是调用一个方法。确实,它调用一个方法,但是更加特别的是,它调用在operation属性中指定名称的那个属性的getter方法。
在默认情况下,这个operation属性值的第一个字母将被大写,而且其结果被预先与get一同考虑,以生成将被调用的那个方法的名称。在这里,getUsername()方法被调用,同时它的返回值被呈递给JSP输出。
现在,读者已经了解如何利用Spring Security的过滤器来保护Web应用程序。不过,在结束Spring Security之前,让我们快速看一下如何利用Spring Security和AOP保护方法调用。
| 回书目 上一节 下一节 |