JSF 中的确认链接电子邮件
Posted
技术标签:
【中文标题】JSF 中的确认链接电子邮件【英文标题】:Confirmation link Email in JSF 【发布时间】:2011-03-18 17:42:37 【问题描述】:您如何创建一个链接,您可以通过电子邮件发送给用户以确认他们的电子邮件地址在 JSF 中被点击?即,一旦他们点击链接,他们的帐户就会被激活。
【问题讨论】:
【参考方案1】:您可以通过创建一个页面(例如.jsp)来实现它:
<f:view beforePhaseListener="#userActivationController.performActivation">
(这是用于facelets;对于jsp,属性只是beforePhase
)。然后,在托管 bean 的方法中使用FacesContext.getCurrentContext().getExternalContext().getParameterMap()
获取请求参数并获取激活码,传递如下:
http://yoursite.com/activate.jsp?code=54gfd54tgdgfd
【讨论】:
【参考方案2】:假设您已经使用 JSF 2.0,您可以获取 @ManagedProperty
和 @PostConstruct
。
@ManagedBean
@RequestScoped
public class Activation
@ManagedProperty(value="#param.key")
private String key;
private boolean valid;
@PostConstruct
public void init()
valid = check(key); // And auto-login if valid?
// ...
然后在http://example.com/activate.jsf?key=somelonggeneratedkey访问的JSF中
<h:panelGroup layout="block" rendered="#activation.valid">
<p>Your account is successfully activated!</p>
<p><h:link outcome="home">Go to home page</h:link></p>
</h:panelGroup>
<h:panelGroup layout="block" rendered="#!activation.valid">
<p>Activation failed! Please enter your email address to try once again.</p>
<h:form>
...
</h:form>
</h:panelGroup>
【讨论】:
这正是我所需要的。谢谢+1 快速提问。代码必须长且唯一。 java有没有办法像BalusC那样生成一个长的唯一序列?我不认为 Java 随机数生成器保证唯一性 @Harry:使用java.util.UUID
:String uuid = UUID.randomUUID().toString();
。
@BalusC,我知道我这个问题已经快 4 年了,但请解释一下#param.key
在这种情况下的含义? (必须是param
吗?)
@Buhake: balusc.blogspot.nl/2011/09/…以上是关于JSF 中的确认链接电子邮件的主要内容,如果未能解决你的问题,请参考以下文章