# AuthMethod

> AuthMethod is a base class implementing the yii\filters\auth\AuthInterface interface.

[API reference](/docs/api/index.md) › [yii](/docs/api/yii/index.md) › [filters](/docs/api/yii/filters/index.md) › [auth](/docs/api/yii/filters/auth/index.md) › AuthMethod

| abstract class | `yii\filters\auth\AuthMethod` |
| --- | --- |
| Extends | [`yii\base\ActionFilter`](/docs/api/yii/base/actionfilter/index.md) » [`yii\base\Behavior`](/docs/api/yii/base/behavior/index.md) » [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| Implements | [`AuthInterface`](/docs/api/yii/filters/auth/authinterface/index.md), [`yii\base\Configurable`](/docs/api/yii/base/configurable/index.md) |
| Since | 2.0 |
| Source | [`framework/filters/auth/AuthMethod.php`](https://github.com/yiisoft/yii2/blob/22.0/framework/filters/auth/AuthMethod.php#L30) |

4 subclasses:

- [`CompositeAuth`](/docs/api/yii/filters/auth/compositeauth/index.md)
- [`HttpBasicAuth`](/docs/api/yii/filters/auth/httpbasicauth/index.md)
- [`HttpHeaderAuth`](/docs/api/yii/filters/auth/httpheaderauth/index.md)
- [`QueryParamAuth`](/docs/api/yii/filters/auth/queryparamauth/index.md)

AuthMethod is a base class implementing the [`AuthInterface`](/docs/api/yii/filters/auth/authinterface/index.md) interface.

## Properties

| Property | Type | Description | Defined by |
| --- | --- | --- | --- |
| <span id="property-except"></span>[`$except`](/docs/api/yii/base/actionfilter/index.md#property-except) | `array` | List of action IDs that this filter should not apply to. Default: `[]`. | [`yii\base\ActionFilter`](/docs/api/yii/base/actionfilter/index.md) |
| <span id="property-only"></span>[`$only`](/docs/api/yii/base/actionfilter/index.md#property-only) | `array` | List of action IDs that this filter should apply to. Default: `[]`. | [`yii\base\ActionFilter`](/docs/api/yii/base/actionfilter/index.md) |
| [`$optional`](#property-optional) | `array` | List of action IDs that this filter will be applied to, but auth failure will not lead to error. Default: `[]`. Available since 2.0.7. | `AuthMethod` |
| <span id="property-owner"></span>[`$owner`](/docs/api/yii/base/behavior/index.md#property-owner) | `yii\base\T\|null` | The owner of this behavior Default: `null`. | [`yii\base\Behavior`](/docs/api/yii/base/behavior/index.md) |
| [`$request`](#property-request) | [`yii\web\Request`](/docs/api/yii/web/request/index.md)`\|null` | The current request. Default: `null`. | `AuthMethod` |
| [`$response`](#property-response) | [`yii\web\Response`](/docs/api/yii/web/response/index.md)`\|null` | The response to be sent. Default: `null`. | `AuthMethod` |
| [`$user`](#property-user) | [`yii\web\User`](/docs/api/yii/web/user/index.md)`\|null` | The user object representing the user authentication status. Default: `null`. | `AuthMethod` |

## Methods

| Method | Description | Defined by |
| --- | --- | --- |
| <span id="method-__construct"></span>[`__construct()`](/docs/api/yii/base/baseobject/index.md#method-__construct) | Constructor. | [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| <span id="method-__call"></span>[`__call()`](/docs/api/yii/base/baseobject/index.md#method-__call) | Calls the named method which is not a class method. | [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| <span id="method-__get"></span>[`__get()`](/docs/api/yii/base/baseobject/index.md#method-__get) | Returns the value of an object property. | [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| <span id="method-__isset"></span>[`__isset()`](/docs/api/yii/base/baseobject/index.md#method-__isset) | Checks if a property is set, i.e. defined and not null. | [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| <span id="method-__set"></span>[`__set()`](/docs/api/yii/base/baseobject/index.md#method-__set) | Sets value of an object property. | [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| <span id="method-__unset"></span>[`__unset()`](/docs/api/yii/base/baseobject/index.md#method-__unset) | Sets an object property to null. | [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| <span id="method-afterAction"></span>[`afterAction()`](/docs/api/yii/base/actionfilter/index.md#method-afterAction) | This method is invoked right after an action is executed. | [`yii\base\ActionFilter`](/docs/api/yii/base/actionfilter/index.md) |
| <span id="method-afterFilter"></span>[`afterFilter()`](/docs/api/yii/base/actionfilter/index.md#method-afterFilter) |  | [`yii\base\ActionFilter`](/docs/api/yii/base/actionfilter/index.md) |
| <span id="method-attach"></span>[`attach()`](/docs/api/yii/base/actionfilter/index.md#method-attach) | Attaches the behavior object to the component. | [`yii\base\ActionFilter`](/docs/api/yii/base/actionfilter/index.md) |
| <span id="method-authenticate"></span>[`authenticate()`](/docs/api/yii/filters/auth/authinterface/index.md#method-authenticate) abstract | Authenticates the current user. | [`AuthInterface`](/docs/api/yii/filters/auth/authinterface/index.md) |
| [`beforeAction()`](#method-beforeAction) | This method is invoked right before an action is to be executed (after all possible filters.) You may override this method to do last-minute preparation for the action. | `AuthMethod` |
| <span id="method-beforeFilter"></span>[`beforeFilter()`](/docs/api/yii/base/actionfilter/index.md#method-beforeFilter) |  | [`yii\base\ActionFilter`](/docs/api/yii/base/actionfilter/index.md) |
| <span id="method-canGetProperty"></span>[`canGetProperty()`](/docs/api/yii/base/baseobject/index.md#method-canGetProperty) | Returns a value indicating whether a property can be read. | [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| <span id="method-canSetProperty"></span>[`canSetProperty()`](/docs/api/yii/base/baseobject/index.md#method-canSetProperty) | Returns a value indicating whether a property can be set. | [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| [`challenge()`](#method-challenge) | Generates challenges upon authentication failure. | `AuthMethod` |
| <span id="method-className"></span>[`className()`](/docs/api/yii/base/baseobject/index.md#method-className) static | Returns the fully qualified name of this class. | [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| <span id="method-detach"></span>[`detach()`](/docs/api/yii/base/actionfilter/index.md#method-detach) | Detaches the behavior object from the component. | [`yii\base\ActionFilter`](/docs/api/yii/base/actionfilter/index.md) |
| <span id="method-events"></span>[`events()`](/docs/api/yii/base/behavior/index.md#method-events) | Declares event handlers for the [`$owner`](/docs/api/yii/base/behavior/index.md#property-owner)'s events. | [`yii\base\Behavior`](/docs/api/yii/base/behavior/index.md) |
| [`handleFailure()`](#method-handleFailure) | Handles authentication failure. | `AuthMethod` |
| <span id="method-hasMethod"></span>[`hasMethod()`](/docs/api/yii/base/baseobject/index.md#method-hasMethod) | Returns a value indicating whether a method is defined. | [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| <span id="method-hasProperty"></span>[`hasProperty()`](/docs/api/yii/base/baseobject/index.md#method-hasProperty) | Returns a value indicating whether a property is defined. | [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| <span id="method-init"></span>[`init()`](/docs/api/yii/base/baseobject/index.md#method-init) | Initializes the object. | [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| <span id="method-getActionId"></span>[`getActionId()`](/docs/api/yii/base/actionfilter/index.md#method-getActionId) protected | Returns an action ID by converting [`Action::$uniqueId`](/docs/api/yii/base/action/index.md#property-uniqueId) into an ID relative to the module. | [`yii\base\ActionFilter`](/docs/api/yii/base/actionfilter/index.md) |
| <span id="method-isActive"></span>[`isActive()`](/docs/api/yii/base/actionfilter/index.md#method-isActive) protected | Returns a value indicating whether the filter is active for the given action. | [`yii\base\ActionFilter`](/docs/api/yii/base/actionfilter/index.md) |
| [`isOptional()`](#method-isOptional) protected | Checks, whether authentication is optional for the given action. | `AuthMethod` |

## Property details

### $optional <span id="property-optional"></span>

```php
public array $optional = []
```

List of action IDs that this filter will be applied to, but auth failure will not lead to error.

It may be used for actions, that are allowed for public, but return some additional data for authenticated users.
Defaults to empty, meaning authentication is not optional for any action.
Since version 2.0.10 action IDs can be specified as wildcards, e.g. `site/*`.

**Since**

2.0.7

### $request <span id="property-request"></span>

```php
public yii\web\Request|null $request = null
```

The current request.

If not set, the `request` application component will be used.

### $response <span id="property-response"></span>

```php
public yii\web\Response|null $response = null
```

The response to be sent.

If not set, the `response` application component will be used.

### $user <span id="property-user"></span>

```php
public yii\web\User|null $user = null
```

The user object representing the user authentication status.

If not set, the `user` application component will be used.

## Method details

### beforeAction() <span id="method-beforeAction"></span>

```php
public function beforeAction(mixed $action): bool
```

This method is invoked right before an action is to be executed (after all possible filters.)
You may override this method to do last-minute preparation for the action.

**Parameters**

| Parameter | Type | Description |
| --- | --- | --- |
| `$action` | `mixed` | The action to be executed. |

**Returns**

`bool`: Whether the action should continue to be executed.

### challenge() <span id="method-challenge"></span>

```php
public function challenge(mixed $response): mixed
```

Generates challenges upon authentication failure.

For example, some appropriate HTTP headers may be generated.

**Parameters**

| Parameter | Type | Description |
| --- | --- | --- |
| `$response` | `mixed` |  |

**Returns**

`mixed`

### handleFailure() <span id="method-handleFailure"></span>

```php
public function handleFailure(mixed $response): mixed
```

Handles authentication failure.

The implementation should normally throw UnauthorizedHttpException to indicate authentication failure.

**Parameters**

| Parameter | Type | Description |
| --- | --- | --- |
| `$response` | `mixed` |  |

**Returns**

`mixed`

**Throws**

- [`yii\web\UnauthorizedHttpException`](/docs/api/yii/web/unauthorizedhttpexception/index.md)

### isOptional() <span id="method-isOptional"></span>

```php
protected function isOptional(yii\base\Action $action): bool
```

Checks, whether authentication is optional for the given action.

**Parameters**

| Parameter | Type | Description |
| --- | --- | --- |
| `$action` | [`yii\base\Action`](/docs/api/yii/base/action/index.md) | Action to be checked. |

**Returns**

`bool`: Whether authentication is optional or not.

**Since**

2.0.7

**See also**

- [`$optional`](/docs/api/yii/filters/auth/authmethod/index.md#property-optional)