确认链接JSF中的电子邮件

DD.*_*DD. 9 jsf email-validation

如何创建一个链接,您可以通过电子邮件发送给用户以确认他们的电子邮件地址是否被点击了JSF?即一旦他们点击链接,他们的帐户就会被激活.

Bal*_*usC 18

假设你已经在使用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?
    }

    // ...
}
Run Code Online (Sandbox Code Playgroud)

然后在JSF中访问http://example.com/activate.jsf?key=somelonggeneratedkey

<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>
Run Code Online (Sandbox Code Playgroud)

  • @Harry:使用[`java.util.UUID`](http://download.oracle.com/javase/6/docs/api/java/util/UUID.html):`String uuid = UUID.randomUUID()的ToString();`. (3认同)

Boz*_*zho 6

您可以通过创建具有以下内容的页面(.jsp for ex)来实现它:

<f:view beforePhaseListener="#{userActivationController.performActivation}">
Run Code Online (Sandbox Code Playgroud)

(这是针对facelets的;对于jsp,属性就是beforePhase).然后,在托管bean的方法中使用FacesContext.getCurrentContext().getExternalContext().getParameterMap()获取请求参数并获取激活码,其传递方式如下:

http://yoursite.com/activate.jsp?code=54gfd54tgdgfd