1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.myfaces.tobago.internal.context;
21
22 import org.apache.myfaces.tobago.internal.util.RandomUtils;
23 import org.slf4j.Logger;
24 import org.slf4j.LoggerFactory;
25
26 import javax.faces.component.UIViewRoot;
27 import javax.faces.context.FacesContext;
28 import java.io.Serializable;
29 import java.lang.invoke.MethodHandles;
30
31 public class Nonce implements Serializable {
32
33 private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
34
35 private static final String KEY = Nonce.class.getName();
36
37 private Nonce() {
38 }
39
40 public static String getNonce(final FacesContext facesContext) {
41 final UIViewRoot viewRoot = facesContext.getViewRoot();
42 String nonce = (String) viewRoot.getViewMap().get(KEY);
43 if (nonce == null) {
44 nonce = RandomUtils.nextString();
45 LOG.debug("Creating nonce='{}'", nonce);
46 viewRoot.getViewMap().put(KEY, nonce);
47 }
48 return nonce;
49 }
50 }