我想显示一个不同的状态消息,当一个被暂停的用户试图登录。如果用户处于活动状态,我们会从authenticate方法返回true,否则我们会添加一个自定义的StatusMessage消息,提示“用户X已被暂停”。底层的身份验证也失败并添加一个StatusMessage。我尝试用下面的方法去除seam生成的statusMessage,但它似乎不起作用,并向我显示2种不同的状态消息(我的自定义消息,接缝生成)。这里会有什么问题?如何删除由接缝安全模块添加的状态消息?
StatusMessages statusMessages;
statusMessages.clear()
statusMessages.clearGlobalMessages()
statusMessages.clearKeyedMessages(id)
EDIT1:
public boolean authenticate() {
log.info("Authenticating {0}", identity.getCredentials().getUsername());
String username = identity.getCredentials().getUsername();
String password = identity.getCredentials().getPassword();
// return true if the authentication was
// successful, false otherwise
try {
Query query = entityManager.createNamedQuery("user.by.login.id");
query.setParameter("loginId", username);
// only active users can log in
query.setParameter("status", "ACTIVE");
currentUser = (User)query.getSingleResult();
} catch (PersistenceException ignore) {
// Provide a status message for the locked account
statusMessages.clearGlobalMessages();
statusMessages.addFromResourceBundle(
"login.account.locked", new Object[] { username });
return false;
}
IdentityManager identityManager = IdentityManager.instance();
if (!identityManager.authenticate(username, "password")) {
return false;
} else {
log.info("Authenticated user {0} successfully", username);
}
}
渲染似乎是缝中的一个无效标记2.2 – Joe 2010-04-24 16:54:58
我尝试了在我的WEB-INF \ pages.xml中重定向的建议,但我仍然碰巧只获得“登录失败”消息。即使我抛出LockedAccount异常,我也不会收到“自定义消息”。 – Joe 2010-04-24 17:19:31