【问题标题】:Confirmation link Email in JSFJSF 中的确认链接电子邮件
【发布时间】:2011-03-18 17:42:37
【问题描述】:

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

【问题讨论】:

    标签: jsf email-validation


    【解决方案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.UUIDString uuid = UUID.randomUUID().toString();
      • @BalusC,我知道我这个问题已经快 4 年了,但请解释一下#{param.key} 在这种情况下的含义? (必须是param吗?)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-25
      • 2015-11-12
      • 2014-10-12
      相关资源
      最近更新 更多