Come si crea un collegamento che è possibile inviare via e-mail agli utenti per confermare che il proprio indirizzo e-mail sia stato fatto clic in JSF? cioè, una volta cliccato sul link, il loro account verrà attivato.Link di conferma Email in JSF
9
A
risposta
17
Supponendo che è già in corso JSF 2.0, si potrebbe afferrare @ManagedProperty
e @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?
}
// ...
}
e poi in JSF cui si accede da 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>
6
è possibile implementare con la creazione di una pagina (.jsp es) che ha:
<f:view beforePhaseListener="#{userActivationController.performActivation}">
(questo è per facelets, per jsp l'attributo è solo beforePhase
). E poi, nel metodo del bean gestito utilizzare FacesContext.getCurrentContext().getExternalContext().getParameterMap()
per ottenere i patameters richiesta e ottenere il codice di attivazione, che viene passato come:
Questo è proprio quello che mi serve. Grazie +1 –
Domanda veloce. Il codice deve essere lungo e unico. Java ha un modo per generare una lunga sequenza unica come quella di BalusC? Non penso che il generatore di numeri casuali Java garantisca l'unicità –
@Harry: Usa ['java.util.UUID'] (http://download.oracle.com/javase/6/docs/api/java/util/UUID.html) : 'String uuid = UUID.randomUUID(). ToString();'. – BalusC