View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *     http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.shiro.authc;
20  
21  /**
22   * Thrown when an authentication attempt has been received for an account that has already been
23   * authenticated (i.e. logged-in), and the system is configured to prevent such concurrent access.
24   *
25   * <p>This is useful when an application must ensure that only one person is logged-in to a single
26   * account at any given time.
27   *
28   * <p>Sometimes account names and passwords are lazily given away
29   * to many people for easy access to a system.  Such behavior is undesirable in systems where
30   * users are accountable for their actions, such as in government applications, or when licensing
31   * agreements must be maintained, such as those which only allow 1 user per paid license.
32   *
33   * <p>By disallowing concurrent access, such systems can ensure that each authenticated session
34   * corresponds to one and only one user at any given time.
35   *
36   * @since 0.1
37   */
38  public class ConcurrentAccessException extends AccountException {
39  
40      /**
41       * Creates a new ConcurrentAccessException.
42       */
43      public ConcurrentAccessException() {
44          super();
45      }
46  
47      /**
48       * Constructs a new ConcurrentAccessException.
49       *
50       * @param message the reason for the exception
51       */
52      public ConcurrentAccessException(String message) {
53          super(message);
54      }
55  
56      /**
57       * Constructs a new ConcurrentAccessException.
58       *
59       * @param cause the underlying Throwable that caused this exception to be thrown.
60       */
61      public ConcurrentAccessException(Throwable cause) {
62          super(cause);
63      }
64  
65      /**
66       * Constructs a new ConcurrentAccessException.
67       *
68       * @param message the reason for the exception
69       * @param cause   the underlying Throwable that caused this exception to be thrown.
70       */
71      public ConcurrentAccessException(String message, Throwable cause) {
72          super(message, cause);
73      }
74  
75  }