2010-07-20 21 views
9

¿Cómo se hace un enlace que se puede enviar por correo electrónico a los usuarios para confirmar que se haga clic en JSF en su dirección de correo electrónico? es decir, una vez que hacen clic en el enlace, se activará su cuenta.Enlace de confirmación Correo electrónico en JSF

Respuesta

17

Asumiendo que ya está en JSF 2.0, se pudiera tomar @ManagedProperty y @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? 
    } 

    // ... 
} 

y luego en JSF que se accede por 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> 
+0

Esto es justo lo que necesito. Gracias +1 –

+0

Pregunta rápida. El código debe ser largo y único. ¿Java tiene una manera de generar una larga secuencia única como esa BalusC? No creo que el generador de números aleatorios de Java garantice la unicidad –

+3

@Harry: use ['java.util USID'] (http://download.oracle.com/javase/6/docs/api/java/util/UUID.html) : 'String uuid = UUID.randomUUID(). ToString();'. – BalusC

6

Puede ponerlo en práctica mediante la creación de una página (por ej .jsp) que tiene:

<f:view beforePhaseListener="#{userActivationController.performActivation}"> 

(esto es para facelets; JSP para el atributo es sólo beforePhase). Y luego, en el método del bean gestionado utilizar FacesContext.getCurrentContext().getExternalContext().getParameterMap() para obtener los patameters solicitud y obtener el código de activación, que se pasa como:

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

Cuestiones relacionadas