我在我的 jsf 应用程序中使用 shiro 进行安全管理,我想知道如何在 jsf 页面中获取当前用户名,请指教。
我试过<shiro:principal/>
了,但它总是返回空字符串,尽管用户已登录。
Shiro 标签适用于 JSP,而不适用于 Facelets。Shiro 还停留在 J2EE 时代,需要赶上被称为“Java EE”的新世界,包括 JSP 的继任者 Facelets。
幸运的是,它至少可以通过与容器管理身份验证相同的方式使用HttpServletRequest#getRemoteUser()
:
<p>Welcome, #{request.remoteUser}</p>
有一个库允许您将shiro 与 JSF一起使用:
<repository>
<id>bintray-deluan-maven</id>
<name>bintray</name>
<url>http://dl.bintray.com/deluan/maven</url>
</repository>
然后你可以使用:
<shiro:principal property="name"/>
但小心点!它容易受到 XSS 的攻击!