2010-07-20 13 views
9

E-posta adreslerine JSF'ye tıklandığını onaylamak için kullanıcılara e-posta gönderebileceğiniz bir bağlantı nasıl yapılır? Yani bağlantıyı tıkladıklarında, hesapları aktif hale gelecektir.Onay linki JSF'ye e-posta gönder

cevap

17

, sen yakala olabilir @ManagedProperty ve @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? 
    } 

    // ... 
} 

ve sonra JSF Bu tam da ihtiyacım budur 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

tarafından erişilir hangi. Teşekkür ederiz +1 –

+0

Hızlı soru. Kodun uzun ve benzersiz olması gerekiyor. Java'nın BalusC gibi uzun bir eşsiz sekans üretme yolu var mı? Java rasgele sayı üreteci garantisinin benzersiz olduğunu düşünmüyorum –

+3

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

6

Sen sahip bir sayfa (ex .jsp) oluşturarak bunu uygulayabilirsiniz:

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

(bu facelets içindir; nitelik sadece beforePhase olduğu jsp için). Ve sonra, yönetilen fasulye yönteminde isteği patameters elde etmek FacesContext.getCurrentContext().getExternalContext().getParameterMap() kullanmak ve benzeri geçirilir aktivasyon kodu, olsun: Eğer JSF 2.0 zaten varsayarsak

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