如何更改特定组的登录页面。
例如,我有一个组DAM用户,我只希望这个组重定向到特定的登录页面,而不是所有组,它们具有ROOT MAPPING中提到的标准登录页面。
您必须编写自定义代码才能实现此目的。如果您正在使用/扩展AuthenticationHandler,那么您可以查看实现AuthenticationFeedbackHandler,您可以在重定向上提供自定义实现。另请参阅DefaultAuthenticationFeedbackHandler
您可以拥有一个提供基于组的重定向映射和/或默认重定向的服务/配置,以便成功使用UserManager API来登录用户的实例,并从中获取组信息。用它来处理成功的重定向。
final Session adminSession = adminResolver.adaptTo(Session.class);
final UserManager userManager = adminResolver.adaptTo(UserManager.class);
final User user = (User) userManager.getAuthorizable(adminSession.getUserID());
Iterator<Group> itr=user.memberOf();
while(itr.hasNext())
{
Group group=(Group)itr.next();
logger.info("group.getID().."+group.getID());
logger.info("group.getPrincipal().getName().."+group.getPrincipal().getName());
}
----------------------更新示例代码----------------
在Adobe的ACS Common项目中有一个示例实现,可以找到here
看看方法 - public boolean authenticationSucceeded(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, AuthenticationInfo authenticationInfo)
你可以在这里提供你的实现,而不是使用DeferredRedirectHttpServletResponse
。在您的实现中,您需要检索您的URL /路径以重定向并发送重定向(确保请求包装器中的路径身份验证信息,以便继续执行登录状态)