Liferay:自动登录后重定向以更改密码
我想要一个功能,当我第一次创建一个用户时,我会在Liferay中的用户创建邮件中为该用户提供一个自动登录url 在我的自动登录实现中,我检查了用户是否第一次拥有loggedin。如果是首次登录,则会自动对用户进行身份验证,如果不是,则会看到门户的登录页面。我已经成功地做到了这一点 但现在我想要的是,一旦自动登录,用户将被重定向到门户的重置密码页面。在哪种情况下可以正确执行此操作(在哪种情况下设置钩子)?门户的重定向url是什么?任何帮助都将不胜感激Liferay:自动登录后重定向以更改密码,liferay,autologin,Liferay,Autologin,我想要一个功能,当我第一次创建一个用户时,我会在Liferay中的用户创建邮件中为该用户提供一个自动登录url 在我的自动登录实现中,我检查了用户是否第一次拥有loggedin。如果是首次登录,则会自动对用户进行身份验证,如果不是,则会看到门户的登录页面。我已经成功地做到了这一点 但现在我想要的是,一旦自动登录,用户将被重定向到门户的重置密码页面。在哪种情况下可以正确执行此操作(在哪种情况下设置钩子)?门户的重定向url是什么?任何帮助都将不胜感激 提前谢谢 您可以直接在AutoLogin类中执
提前谢谢 您可以直接在AutoLogin类中执行此操作:
公共类MyAutoLogin实现AutoLogin{
@凌驾
公共字符串[]登录(HttpServletRequest请求、HttpServletResponse响应)引发AutoLoginException{
...
如果(用户应被指示){
sendRedirect(重定向URL);
}
}
//更新
返回凭证;
}
一个更简单的解决方案怎么样
在给用户的第一封电子邮件中,告诉他们,一旦他们首次登录,就可以获得这样的自动登录
在Liferay方面,有一个要求更改密码的密码策略,或者显式标记用户以更改其密码
通过这种方式,Liferay完全负责用户帐户的处理,您不必冒着在身份验证中漏掉一些漏洞的风险(这是您不想陷入困境的一个领域),同时仍然拥有所有的好处
您可以实现自定义portlet并将其放置在用户的个人页面或门户中的任何其他页面上 最后,我让它工作起来了 只要在自动登录实现中发现用户的密码修改日期为null,我就需要将Liferay用户的密码重置设置为true。Liferay的PortalRequestProcessor有一个内部逻辑,如果它看到用户的passwordReset标志为true,就可以返回更新密码页面
public class MyAutoLogin implements AutoLogin
{
@Override
public String[] login(HttpServletRequest request, HttpServletResponse response) throws AutoLoginException
{
//Get user details from auto Login request params
if (null == user.getPasswordModifiedDate())
{
user.setPasswordReset(true);
return credentials;
}
return null;
}
}
通过在if条件内返回凭据,我确保仅为那些即使在Liferay上发布帐户创建后也未更改密码的用户启用自动登录。但是如果在返回所需用户数据的字符串[]之前将用户重定向到更新密码url,门户不会对用户进行身份验证,并且会再次将我发送到门户的登录页面。不,应该可以。更改响应并返回凭据的原因。请参阅答案更新。您可以添加自己的PostLoginAction:从而扩展portal.properties的“login.events.post=”。但我的答案解决方案必须有效),但我们需要验证电子邮件。我们需要一个链接,而不是邮件中的密码,以便首次登录用户。如果您确实需要按照您描述的方式进行操作,我的解决方案并不适合您。如果你在寻找一个简单而不具侵入性的解决方案来解决潜在问题,你可能会对此有所了解。