1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.acegisecurity.providers.rememberme;
17
18 import org.acegisecurity.GrantedAuthority;
19 import org.acegisecurity.providers.AbstractAuthenticationToken;
20
21 import java.io.Serializable;
22
23 import org.springframework.util.Assert;
24
25
26 /***
27 * Represents a remembered <code>Authentication</code>.
28 *
29 * <p>
30 * A remembered <code>Authentication</code> must provide a fully valid
31 * <code>Authentication</code>, including the <code>GrantedAuthority</code>[]s
32 * that apply.
33 * </p>
34 *
35 * @author Ben Alex
36 * @version $Id: RememberMeAuthenticationToken.java,v 1.4 2005/11/17 00:55:52 benalex Exp $
37 */
38 public class RememberMeAuthenticationToken extends AbstractAuthenticationToken
39 implements Serializable {
40
41
42 private Object principal;
43 private GrantedAuthority[] authorities;
44 private int keyHash;
45 private boolean authenticated;
46
47
48
49 /***
50 * Constructor.
51 *
52 * @param key to identify if this object made by an authorised client
53 * @param principal the principal (typically a <code>UserDetails</code>)
54 * @param authorities the authorities granted to the principal
55 *
56 * @throws IllegalArgumentException if a <code>null</code> was passed
57 */
58 public RememberMeAuthenticationToken(String key, Object principal,
59 GrantedAuthority[] authorities) {
60 if ((key == null) || ("".equals(key)) || (principal == null)
61 || "".equals(principal) || (authorities == null)
62 || (authorities.length == 0)) {
63 throw new IllegalArgumentException(
64 "Cannot pass null or empty values to constructor");
65 }
66
67 for (int i = 0; i < authorities.length; i++) {
68 Assert.notNull(authorities[i], "Granted authority element "
69 + i
70 + " is null - GrantedAuthority[] cannot contain any null elements");
71 }
72
73 this.keyHash = key.hashCode();
74 this.principal = principal;
75 this.authorities = authorities;
76 this.authenticated = true;
77 }
78
79 protected RememberMeAuthenticationToken() {
80 throw new IllegalArgumentException("Cannot use default constructor");
81 }
82
83
84
85 public void setAuthenticated(boolean isAuthenticated) {
86 this.authenticated = isAuthenticated;
87 }
88
89 public boolean isAuthenticated() {
90 return this.authenticated;
91 }
92
93 public GrantedAuthority[] getAuthorities() {
94 return this.authorities;
95 }
96
97 /***
98 * Always returns an empty <code>String</code>
99 *
100 * @return an empty String
101 */
102 public Object getCredentials() {
103 return "";
104 }
105
106 public int getKeyHash() {
107 return this.keyHash;
108 }
109
110 public Object getPrincipal() {
111 return this.principal;
112 }
113
114 public boolean equals(Object obj) {
115 if (!super.equals(obj)) {
116 return false;
117 }
118
119 if (obj instanceof RememberMeAuthenticationToken) {
120 RememberMeAuthenticationToken test = (RememberMeAuthenticationToken) obj;
121
122 if (this.getKeyHash() != test.getKeyHash()) {
123 return false;
124 }
125
126 return true;
127 }
128
129 return false;
130 }
131 }