---
title: "Phalcon Auth"
version: "5.14"
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.phalcon.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Phalcon Auth

:::info[NOTE]
All classes are prefixed with `Phalcon`
:::

## Auth\AbstractAuthDispatcherListener

<span class="badge badge--abstract">Abstract</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/AbstractAuthDispatcherListener.zep">Source on GitHub</a>

Shared enforcement algorithm for the Cli and Mvc auth dispatcher
listeners. The dispatcher-specific subclass provides only the action
name from its typed dispatcher, the action-kind label used in the
access-denied exception, and (Mvc only) a forward handler for
Access::redirectTo().

<div class="api-tree">

- **`Phalcon\Auth\AbstractAuthDispatcherListener`**
- [`Phalcon\Auth\Cli\AuthDispatcherListener`](#authcliauthdispatcherlistener)
- [`Phalcon\Auth\Mvc\AuthDispatcherListener`](#authmvcauthdispatcherlistener)

</div>

__Uses__ `Phalcon\Auth\Exceptions\AccessDenied` · `Phalcon\Contracts\Auth\Manager`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authabstractauthdispatcherlistener-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">Manager</span> <span class="sv">$manager</span> )</code>
</a>
<a class="api-item" href="#authabstractauthdispatcherlistener-enforce">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">enforce</span>(<span class="prm"><span class="st">string</span> <span class="sv">$actionName</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$forwardHandler</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Runs the access check for the given action name. Returns true when</span>
</a>
<a class="api-item" href="#authabstractauthdispatcherlistener-getactiontype">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getActionType</span>()</code>
<span class="desc">Returns the kind label used by AccessDenied (e.g. &#039;task&#039;,</span>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">Manager</code>
<code class="sig"><span class="sv">$manager</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="authabstractauthdispatcherlistener-__construct"><code>__construct()</code></h4>

```php
public function __construct( Manager $manager );
```

<div class="api-group">Protected · 2</div>

<h4 id="authabstractauthdispatcherlistener-enforce"><code>enforce()</code></h4>

```php
protected function enforce(
string $actionName,
mixed $forwardHandler = null
): bool;
```

Runs the access check for the given action name. Returns true when
the dispatch should proceed, false when a forward was issued, and
throws when access is denied without a redirect target.

<h4 id="authabstractauthdispatcherlistener-getactiontype"><code>getActionType()</code></h4>

```php
abstract protected function getActionType(): string;
```

Returns the kind label used by AccessDenied (e.g. 'task',
'action').

## Auth\Access\AbstractAccess

<span class="badge badge--abstract">Abstract</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Access/AbstractAccess.zep">Source on GitHub</a>

<div class="api-tree">

- **`Phalcon\Auth\Access\AbstractAccess`** — implements [`Phalcon\Contracts\Auth\Access\Access`](/5.14/api/phalcon_contracts/#contractsauthaccessaccess)
- [`Phalcon\Auth\Access\Auth`](#authaccessauth)
- [`Phalcon\Auth\Access\Guest`](#authaccessguest)

</div>

__Uses__ `Phalcon\Contracts\Auth\Access\Access` · `Phalcon\Contracts\Auth\Manager`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authaccessabstractaccess-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">Manager</span> <span class="sv">$manager</span> )</code>
</a>
<a class="api-item" href="#authaccessabstractaccess-getexceptactions">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getExceptActions</span>()</code>
</a>
<a class="api-item" href="#authaccessabstractaccess-getonlyactions">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getOnlyActions</span>()</code>
</a>
<a class="api-item" href="#authaccessabstractaccess-isallowed">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">isAllowed</span>( <span class="st">string</span> <span class="sv">$actionName</span> )</code>
</a>
<a class="api-item" href="#authaccessabstractaccess-redirectto">
<code class="vis vis-public">public</code>
<code class="ret">array|null</code>
<code class="sig"><span class="sf">redirectTo</span>()</code>
</a>
<a class="api-item" href="#authaccessabstractaccess-setexceptactions">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setExceptActions</span>( <span class="st">array</span> <span class="sv">$exceptActions</span><span class="sm"> = []</span> )</code>
</a>
<a class="api-item" href="#authaccessabstractaccess-setonlyactions">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setOnlyActions</span>( <span class="st">array</span> <span class="sv">$onlyActions</span><span class="sm"> = []</span> )</code>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$exceptActions</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">Manager</code>
<code class="sig"><span class="sv">$manager</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$onlyActions</span><span class="sm"> = []</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 7</div>

<h4 id="authaccessabstractaccess-__construct"><code>__construct()</code></h4>

```php
public function __construct( Manager $manager );
```

<h4 id="authaccessabstractaccess-getexceptactions"><code>getExceptActions()</code></h4>

```php
public function getExceptActions(): array;
```

<h4 id="authaccessabstractaccess-getonlyactions"><code>getOnlyActions()</code></h4>

```php
public function getOnlyActions(): array;
```

<h4 id="authaccessabstractaccess-isallowed"><code>isAllowed()</code></h4>

```php
public function isAllowed( string $actionName ): bool;
```

<h4 id="authaccessabstractaccess-redirectto"><code>redirectTo()</code></h4>

```php
public function redirectTo(): array|null;
```

<h4 id="authaccessabstractaccess-setexceptactions"><code>setExceptActions()</code></h4>

```php
public function setExceptActions( array $exceptActions = [] ): void;
```

<h4 id="authaccessabstractaccess-setonlyactions"><code>setOnlyActions()</code></h4>

```php
public function setOnlyActions( array $onlyActions = [] ): void;
```

## Auth\Access\AccessLocator

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Access/AccessLocator.zep">Source on GitHub</a>

Service locator for Phalcon\Auth access gates. Utilizes the container to
obtain the service. For the Phalcon\Container\Container one can use
autowiring. For the Phalcon\Di\Di, one needs to register the gates in it
to be used here.

@extends AbstractLocator&lt;Access>

<div class="api-tree">

- [`Phalcon\Support\AbstractLocator`](/5.14/api/phalcon_support/#supportabstractlocator)
- **`Phalcon\Auth\Access\AccessLocator`**

</div>

__Uses__ `Phalcon\Contracts\Auth\Access\Access` · `Phalcon\Support\AbstractLocator`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authaccessaccesslocator-getexceptionclass">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getExceptionClass</span>()</code>
</a>
<a class="api-item" href="#authaccessaccesslocator-getinterfaceclass">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getInterfaceClass</span>()</code>
</a>
<a class="api-item" href="#authaccessaccesslocator-getservices">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getServices</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Protected · 3</div>

<h4 id="authaccessaccesslocator-getexceptionclass"><code>getExceptionClass()</code></h4>

```php
protected function getExceptionClass(): string;
```

<h4 id="authaccessaccesslocator-getinterfaceclass"><code>getInterfaceClass()</code></h4>

```php
protected function getInterfaceClass(): string;
```

<h4 id="authaccessaccesslocator-getservices"><code>getServices()</code></h4>

```php
protected function getServices(): array;
```

## Auth\Access\Auth

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Access/Auth.zep">Source on GitHub</a>

This file is part of the Phalcon Framework.

(c) Phalcon Team &lt;team@phalcon.io>

For the full copyright and license information, please view the LICENSE.txt
file that was distributed with this source code.

Implementation of this file has been influenced by sinbadxiii/cphalcon-auth
@link    https://github.com/sinbadxiii/cphalcon-auth

<div class="api-tree">

- [`Phalcon\Auth\Access\AbstractAccess`](#authaccessabstractaccess)
- **`Phalcon\Auth\Access\Auth`**

</div>

### Method Summary

<div class="api-list">
<a class="api-item" href="#authaccessauth-allowedif">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">allowedIf</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="authaccessauth-allowedif"><code>allowedIf()</code></h4>

```php
public function allowedIf(): bool;
```

## Auth\Access\Guest

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Access/Guest.zep">Source on GitHub</a>

This file is part of the Phalcon Framework.

(c) Phalcon Team &lt;team@phalcon.io>

For the full copyright and license information, please view the LICENSE.txt
file that was distributed with this source code.

Implementation of this file has been influenced by sinbadxiii/cphalcon-auth
@link    https://github.com/sinbadxiii/cphalcon-auth

<div class="api-tree">

- [`Phalcon\Auth\Access\AbstractAccess`](#authaccessabstractaccess)
- **`Phalcon\Auth\Access\Guest`**

</div>

### Method Summary

<div class="api-list">
<a class="api-item" href="#authaccessguest-allowedif">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">allowedIf</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="authaccessguest-allowedif"><code>allowedIf()</code></h4>

```php
public function allowedIf(): bool;
```

## Auth\Adapter\AbstractAdapter

<span class="badge badge--abstract">Abstract</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Adapter/AbstractAdapter.zep">Source on GitHub</a>

@template TConfig of AdapterConfig

<div class="api-tree">

- **`Phalcon\Auth\Adapter\AbstractAdapter`** — implements [`Phalcon\Contracts\Auth\Adapter\Adapter`](/5.14/api/phalcon_contracts/#contractsauthadapteradapter)
- [`Phalcon\Auth\Adapter\AbstractArrayAdapter`](#authadapterabstractarrayadapter)
- [`Phalcon\Auth\Adapter\Model`](#authadaptermodel)

</div>

__Uses__ `Phalcon\Contracts\Auth\Adapter\Adapter` · `Phalcon\Contracts\Auth\Adapter\AdapterConfig` · `Phalcon\Contracts\Auth\AuthUser` · `Phalcon\Contracts\Encryption\Security\Security`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authadapterabstractadapter-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">Security</span> <span class="sv">$hasher</span>,</span><span class="prm"><span class="st">AdapterConfig</span> <span class="sv">$config</span></span>)</code>
</a>
<a class="api-item" href="#authadapterabstractadapter-getconfig">
<code class="vis vis-public">public</code>
<code class="ret">AdapterConfig</code>
<code class="sig"><span class="sf">getConfig</span>()</code>
<span class="desc">Returns the adapter configuration object.</span>
</a>
<a class="api-item" href="#authadapterabstractadapter-getmodel">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getModel</span>()</code>
<span class="desc">Returns the model class name, if configured.</span>
</a>
<a class="api-item" href="#authadapterabstractadapter-validatecredentials">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">validateCredentials</span>(<span class="prm"><span class="st">AuthUser</span> <span class="sv">$user</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$credentials</span></span>)</code>
<span class="desc">Validates the supplied plaintext password against the user&#039;s stored hash.</span>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">AdapterConfig</code>
<code class="sig"><span class="sv">$config</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">Security</code>
<code class="sig"><span class="sv">$hasher</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 4</div>

<h4 id="authadapterabstractadapter-__construct"><code>__construct()</code></h4>

```php
public function __construct(
Security $hasher,
AdapterConfig $config
);
```

<h4 id="authadapterabstractadapter-getconfig"><code>getConfig()</code></h4>

```php
public function getConfig(): AdapterConfig;
```

Returns the adapter configuration object.

<h4 id="authadapterabstractadapter-getmodel"><code>getModel()</code></h4>

```php
public function getModel(): string|null;
```

Returns the model class name, if configured.

<h4 id="authadapterabstractadapter-validatecredentials"><code>validateCredentials()</code></h4>

```php
public function validateCredentials(
AuthUser $user,
array $credentials
): bool;
```

Validates the supplied plaintext password against the user's stored hash.
Concrete adapters share this implementation; if your data source needs
a different verification strategy, override it.

## Auth\Adapter\AbstractArrayAdapter

<span class="badge badge--abstract">Abstract</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Adapter/AbstractArrayAdapter.zep">Source on GitHub</a>

Common base for adapters whose user records come from an in-memory list
(Memory and Stream). Subclasses provide the row source via loadUsers();
everything else - credentials matching, hydration, the empty-credentials
guard, and a default linear retrieveById - is shared here.

@template TConfig of AdapterConfig
@extends AbstractAdapter&lt;TConfig>

<div class="api-tree">

- [`Phalcon\Auth\Adapter\AbstractAdapter`](#authadapterabstractadapter)
- **`Phalcon\Auth\Adapter\AbstractArrayAdapter`**
- [`Phalcon\Auth\Adapter\Memory`](#authadaptermemory)
- [`Phalcon\Auth\Adapter\Stream`](#authadapterstream)

</div>

__Uses__ `Phalcon\Auth\AuthUser` · `Phalcon\Contracts\Auth\Adapter\AdapterConfig` · `Phalcon\Contracts\Auth\AuthUser`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authadapterabstractarrayadapter-retrievebycredentials">
<code class="vis vis-public">public</code>
<code class="ret">AuthUserContract|null</code>
<code class="sig"><span class="sf">retrieveByCredentials</span>( <span class="st">array</span> <span class="sv">$credentials</span> )</code>
<span class="desc">Walks the user list and returns the first row whose non-&#039;password&#039;</span>
</a>
<a class="api-item" href="#authadapterabstractarrayadapter-retrievebyid">
<code class="vis vis-public">public</code>
<code class="ret">AuthUserContract|null</code>
<code class="sig"><span class="sf">retrieveById</span>( <span class="st">mixed</span> <span class="sv">$id</span> )</code>
<span class="desc">Default linear-scan implementation. Memory overrides this for an O(1)</span>
</a>
<a class="api-item" href="#authadapterabstractarrayadapter-hasidentifyingfield">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">hasIdentifyingField</span>( <span class="st">array</span> <span class="sv">$credentials</span> )</code>
<span class="desc">Tests whether a credentials payload carries at least one identifying</span>
</a>
<a class="api-item" href="#authadapterabstractarrayadapter-hydrate">
<code class="vis vis-protected">protected</code>
<code class="ret">AuthUserContract</code>
<code class="sig"><span class="sf">hydrate</span>( <span class="st">array</span> <span class="sv">$row</span> )</code>
<span class="desc">Hydrates a raw user row into either the configured model class or a</span>
</a>
<a class="api-item" href="#authadapterabstractarrayadapter-loadusers">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">loadUsers</span>()</code>
<span class="desc">Returns the source list of user rows. Concrete subclasses decide</span>
</a>
<a class="api-item" href="#authadapterabstractarrayadapter-matchesrow">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">matchesRow</span>(<span class="prm"><span class="st">array</span> <span class="sv">$row</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$credentials</span></span>)</code>
<span class="desc">Strict per-key match of a row against credentials, skipping &#039;password&#039;.</span>
</a>
</div>

### Methods

<div class="api-group">Public · 2</div>

<h4 id="authadapterabstractarrayadapter-retrievebycredentials"><code>retrieveByCredentials()</code></h4>

```php
public function retrieveByCredentials( array $credentials ): AuthUserContract|null;
```

Walks the user list and returns the first row whose non-'password'
keys all match strictly. Returns null when no row matches or when
$credentials carries no identifying field at all (only 'password',
or empty) - protects callers from the silent "first row wins" footgun.

<h4 id="authadapterabstractarrayadapter-retrievebyid"><code>retrieveById()</code></h4>

```php
public function retrieveById( mixed $id ): AuthUserContract|null;
```

Default linear-scan implementation. Memory overrides this for an O(1)
id-keyed lookup; Stream uses this as-is.

<div class="api-group">Protected · 4</div>

<h4 id="authadapterabstractarrayadapter-hasidentifyingfield"><code>hasIdentifyingField()</code></h4>

```php
protected function hasIdentifyingField( array $credentials ): bool;
```

Tests whether a credentials payload carries at least one identifying
field (i.e. anything other than 'password'). An empty payload - or a
payload that only contains 'password' - is treated as "no lookup".

<h4 id="authadapterabstractarrayadapter-hydrate"><code>hydrate()</code></h4>

```php
protected function hydrate( array $row ): AuthUserContract;
```

Hydrates a raw user row into either the configured model class or a
Phalcon\Auth\AuthUser value object.

<h4 id="authadapterabstractarrayadapter-loadusers"><code>loadUsers()</code></h4>

```php
abstract protected function loadUsers(): array;
```

Returns the source list of user rows. Concrete subclasses decide
where they come from (config array, JSON file, etc.).

<h4 id="authadapterabstractarrayadapter-matchesrow"><code>matchesRow()</code></h4>

```php
protected function matchesRow(
array $row,
array $credentials
): bool;
```

Strict per-key match of a row against credentials, skipping 'password'.

## Auth\Adapter\AdapterLocator

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Adapter/AdapterLocator.zep">Source on GitHub</a>

Service locator for Phalcon\Auth adapters. Utilizes the container to
obtain the service. For the Phalcon\Container\Container one can use
autowiring. For the Phalcon\Di\Di, one needs to register the gates in it
to be used here.

@extends AbstractLocator&lt;Adapter>

<div class="api-tree">

- [`Phalcon\Support\AbstractLocator`](/5.14/api/phalcon_support/#supportabstractlocator)
- **`Phalcon\Auth\Adapter\AdapterLocator`**

</div>

__Uses__ `Phalcon\Contracts\Auth\Adapter\Adapter` · `Phalcon\Support\AbstractLocator`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authadapteradapterlocator-getexceptionclass">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getExceptionClass</span>()</code>
</a>
<a class="api-item" href="#authadapteradapterlocator-getinterfaceclass">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getInterfaceClass</span>()</code>
</a>
<a class="api-item" href="#authadapteradapterlocator-getservices">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getServices</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Protected · 3</div>

<h4 id="authadapteradapterlocator-getexceptionclass"><code>getExceptionClass()</code></h4>

```php
protected function getExceptionClass(): string;
```

<h4 id="authadapteradapterlocator-getinterfaceclass"><code>getInterfaceClass()</code></h4>

```php
protected function getInterfaceClass(): string;
```

<h4 id="authadapteradapterlocator-getservices"><code>getServices()</code></h4>

```php
protected function getServices(): array;
```

## Auth\Adapter\Config\AbstractAdapterConfig

<span class="badge badge--abstract">Abstract</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Adapter/Config/AbstractAdapterConfig.zep">Source on GitHub</a>

This file is part of the Phalcon Framework.

(c) Phalcon Team &lt;team@phalcon.io>

For the full copyright and license information, please view the LICENSE.txt
file that was distributed with this source code.

Implementation of this file has been influenced by sinbadxiii/cphalcon-auth
@link    https://github.com/sinbadxiii/cphalcon-auth

<div class="api-tree">

- **`Phalcon\Auth\Adapter\Config\AbstractAdapterConfig`** — implements [`Phalcon\Contracts\Auth\Adapter\AdapterConfig`](/5.14/api/phalcon_contracts/#contractsauthadapteradapterconfig)
- [`Phalcon\Auth\Adapter\Config\MemoryAdapterConfig`](#authadapterconfigmemoryadapterconfig)
- [`Phalcon\Auth\Adapter\Config\ModelAdapterConfig`](#authadapterconfigmodeladapterconfig)
- [`Phalcon\Auth\Adapter\Config\StreamAdapterConfig`](#authadapterconfigstreamadapterconfig)

</div>

__Uses__ `Phalcon\Contracts\Auth\Adapter\AdapterConfig`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authadapterconfigabstractadapterconfig-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$model</span><span class="sm"> = null</span> )</code>
</a>
<a class="api-item" href="#authadapterconfigabstractadapterconfig-getmodel">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getModel</span>()</code>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sv">$model</span><span class="sm"> = null</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 2</div>

<h4 id="authadapterconfigabstractadapterconfig-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $model = null );
```

<h4 id="authadapterconfigabstractadapterconfig-getmodel"><code>getModel()</code></h4>

```php
public function getModel(): string|null;
```

## Auth\Adapter\Config\MemoryAdapterConfig

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Adapter/Config/MemoryAdapterConfig.zep">Source on GitHub</a>

<div class="api-tree">

- [`Phalcon\Auth\Adapter\Config\AbstractAdapterConfig`](#authadapterconfigabstractadapterconfig)
- **`Phalcon\Auth\Adapter\Config\MemoryAdapterConfig`**

</div>

### Method Summary

<div class="api-list">
<a class="api-item" href="#authadapterconfigmemoryadapterconfig-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">array</span> <span class="sv">$users</span><span class="sm"> = []</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$model</span><span class="sm"> = null</span></span>)</code>
</a>
<a class="api-item" href="#authadapterconfigmemoryadapterconfig-getusers">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getUsers</span>()</code>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$users</span><span class="sm"> = []</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 2</div>

<h4 id="authadapterconfigmemoryadapterconfig-__construct"><code>__construct()</code></h4>

```php
public function __construct(
array $users = [],
string $model = null
);
```

<h4 id="authadapterconfigmemoryadapterconfig-getusers"><code>getUsers()</code></h4>

```php
public function getUsers(): array;
```

## Auth\Adapter\Config\ModelAdapterConfig

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Adapter/Config/ModelAdapterConfig.zep">Source on GitHub</a>

This file is part of the Phalcon Framework.

(c) Phalcon Team &lt;team@phalcon.io>

For the full copyright and license information, please view the LICENSE.txt
file that was distributed with this source code.

Implementation of this file has been influenced by sinbadxiii/cphalcon-auth
@link    https://github.com/sinbadxiii/cphalcon-auth

<div class="api-tree">

- [`Phalcon\Auth\Adapter\Config\AbstractAdapterConfig`](#authadapterconfigabstractadapterconfig)
- **`Phalcon\Auth\Adapter\Config\ModelAdapterConfig`**

</div>

__Uses__ `Phalcon\Auth\Exception` · `Phalcon\Auth\Exceptions\ConfigRequiresNonEmptyValue`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authadapterconfigmodeladapterconfig-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$idColumn</span><span class="sm"> = &quot;id&quot;</span></span>)</code>
</a>
<a class="api-item" href="#authadapterconfigmodeladapterconfig-getidcolumn">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getIdColumn</span>()</code>
</a>
<a class="api-item" href="#authadapterconfigmodeladapterconfig-getmodel">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getModel</span>()</code>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$idColumn</span><span class="sm"> = &quot;id&quot;</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 3</div>

<h4 id="authadapterconfigmodeladapterconfig-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $model,
string $idColumn = "id"
);
```

<h4 id="authadapterconfigmodeladapterconfig-getidcolumn"><code>getIdColumn()</code></h4>

```php
public function getIdColumn(): string;
```

<h4 id="authadapterconfigmodeladapterconfig-getmodel"><code>getModel()</code></h4>

```php
public function getModel(): string;
```

## Auth\Adapter\Config\StreamAdapterConfig

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Adapter/Config/StreamAdapterConfig.zep">Source on GitHub</a>

This file is part of the Phalcon Framework.

(c) Phalcon Team &lt;team@phalcon.io>

For the full copyright and license information, please view the LICENSE.txt
file that was distributed with this source code.

Implementation of this file has been influenced by sinbadxiii/cphalcon-auth
@link    https://github.com/sinbadxiii/cphalcon-auth

<div class="api-tree">

- [`Phalcon\Auth\Adapter\Config\AbstractAdapterConfig`](#authadapterconfigabstractadapterconfig)
- **`Phalcon\Auth\Adapter\Config\StreamAdapterConfig`**

</div>

__Uses__ `Phalcon\Auth\Exception` · `Phalcon\Auth\Exceptions\ConfigRequiresNonEmptyValue`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authadapterconfigstreamadapterconfig-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$file</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$model</span><span class="sm"> = null</span></span>)</code>
</a>
<a class="api-item" href="#authadapterconfigstreamadapterconfig-getfile">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getFile</span>()</code>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$file</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 2</div>

<h4 id="authadapterconfigstreamadapterconfig-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $file,
string $model = null
);
```

<h4 id="authadapterconfigstreamadapterconfig-getfile"><code>getFile()</code></h4>

```php
public function getFile(): string;
```

## Auth\Adapter\Memory

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Adapter/Memory.zep">Source on GitHub</a>

In-memory adapter - useful for tests and small read-only user lists.

@extends AbstractArrayAdapter&lt;MemoryAdapterConfig>

<div class="api-tree">

- [`Phalcon\Auth\Adapter\AbstractAdapter`](#authadapterabstractadapter)
- [`Phalcon\Auth\Adapter\AbstractArrayAdapter`](#authadapterabstractarrayadapter)
- **`Phalcon\Auth\Adapter\Memory`**

</div>

__Uses__ `Phalcon\Auth\Adapter\Config\MemoryAdapterConfig` · `Phalcon\Auth\Internal\Options` · `Phalcon\Contracts\Auth\AuthUser` · `Phalcon\Contracts\Encryption\Security\Security`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authadaptermemory-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">Security</span> <span class="sv">$hasher</span>,</span><span class="prm"><span class="st">MemoryAdapterConfig</span> <span class="sv">$config</span></span>)</code>
</a>
<a class="api-item" href="#authadaptermemory-fromoptions">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">fromOptions</span>(<span class="prm"><span class="st">Security</span> <span class="sv">$hasher</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$options</span></span>)</code>
</a>
<a class="api-item" href="#authadaptermemory-retrievebyid">
<code class="vis vis-public">public</code>
<code class="ret">AuthUser|null</code>
<code class="sig"><span class="sf">retrieveById</span>( <span class="st">mixed</span> <span class="sv">$id</span> )</code>
<span class="desc">Overridden for O(1) lookup via the id index built in the constructor.</span>
</a>
<a class="api-item" href="#authadaptermemory-loadusers">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">loadUsers</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 3</div>

<h4 id="authadaptermemory-__construct"><code>__construct()</code></h4>

```php
public function __construct(
Security $hasher,
MemoryAdapterConfig $config
);
```

<h4 id="authadaptermemory-fromoptions"><code>fromOptions()</code></h4>

```php
public static function fromOptions(
Security $hasher,
array $options
): static;
```

<h4 id="authadaptermemory-retrievebyid"><code>retrieveById()</code></h4>

```php
public function retrieveById( mixed $id ): AuthUser|null;
```

Overridden for O(1) lookup via the id index built in the constructor.

<div class="api-group">Protected · 1</div>

<h4 id="authadaptermemory-loadusers"><code>loadUsers()</code></h4>

```php
protected function loadUsers(): array;
```

## Auth\Adapter\Model

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Adapter/Model.zep">Source on GitHub</a>

Phalcon Model-backed adapter.

@extends AbstractAdapter&lt;ModelAdapterConfig>

<div class="api-tree">

- [`Phalcon\Auth\Adapter\AbstractAdapter`](#authadapterabstractadapter)
- **`Phalcon\Auth\Adapter\Model`** — implements [`Phalcon\Contracts\Auth\Adapter\RememberAdapter`](/5.14/api/phalcon_contracts/#contractsauthadapterrememberadapter)

</div>

__Uses__ `Phalcon\Auth\Adapter\Config\ModelAdapterConfig` · `Phalcon\Auth\Exception` · `Phalcon\Auth\Exceptions\DoesNotImplement` · `Phalcon\Auth\Internal\Options` · `Phalcon\Contracts\Auth\Adapter\RememberAdapter` · `Phalcon\Contracts\Auth\AuthRemember` · `Phalcon\Contracts\Auth\AuthUser` · `Phalcon\Contracts\Auth\RememberToken` · `Phalcon\Contracts\Encryption\Security\Security` · `Phalcon\Mvc\ModelInterface`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authadaptermodel-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">Security</span> <span class="sv">$hasher</span>,</span><span class="prm"><span class="st">ModelAdapterConfig</span> <span class="sv">$config</span></span>)</code>
</a>
<a class="api-item" href="#authadaptermodel-createremembertoken">
<code class="vis vis-public">public</code>
<code class="ret">RememberToken</code>
<code class="sig"><span class="sf">createRememberToken</span>( <span class="st">AuthUser</span> <span class="sv">$user</span> )</code>
<span class="desc">Create and persist a new remember token for the user.</span>
</a>
<a class="api-item" href="#authadaptermodel-fromoptions">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">fromOptions</span>(<span class="prm"><span class="st">Security</span> <span class="sv">$hasher</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$options</span></span>)</code>
</a>
<a class="api-item" href="#authadaptermodel-retrievebycredentials">
<code class="vis vis-public">public</code>
<code class="ret">AuthUser|null</code>
<code class="sig"><span class="sf">retrieveByCredentials</span>( <span class="st">array</span> <span class="sv">$credentials</span> )</code>
<span class="desc">Find a user matching the given credentials (excluding &#039;password&#039; key).</span>
</a>
<a class="api-item" href="#authadaptermodel-retrievebyid">
<code class="vis vis-public">public</code>
<code class="ret">AuthUser|null</code>
<code class="sig"><span class="sf">retrieveById</span>( <span class="st">mixed</span> <span class="sv">$id</span> )</code>
</a>
<a class="api-item" href="#authadaptermodel-retrievebytoken">
<code class="vis vis-public">public</code>
<code class="ret">AuthUser|null</code>
<code class="sig"><span class="sf">retrieveByToken</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$id</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$token</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$userAgent</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Retrieve a user by the remember-me cookie payload.</span>
</a>
</div>

### Methods

<div class="api-group">Public · 6</div>

<h4 id="authadaptermodel-__construct"><code>__construct()</code></h4>

```php
public function __construct(
Security $hasher,
ModelAdapterConfig $config
);
```

<h4 id="authadaptermodel-createremembertoken"><code>createRememberToken()</code></h4>

```php
public function createRememberToken( AuthUser $user ): RememberToken;
```

Create and persist a new remember token for the user.

<h4 id="authadaptermodel-fromoptions"><code>fromOptions()</code></h4>

```php
public static function fromOptions(
Security $hasher,
array $options
): static;
```

<h4 id="authadaptermodel-retrievebycredentials"><code>retrieveByCredentials()</code></h4>

```php
public function retrieveByCredentials( array $credentials ): AuthUser|null;
```

Find a user matching the given credentials (excluding 'password' key).

<h4 id="authadaptermodel-retrievebyid"><code>retrieveById()</code></h4>

```php
public function retrieveById( mixed $id ): AuthUser|null;
```

<h4 id="authadaptermodel-retrievebytoken"><code>retrieveByToken()</code></h4>

```php
public function retrieveByToken(
mixed $id,
string $token,
string $userAgent = null
): AuthUser|null;
```

Retrieve a user by the remember-me cookie payload.

## Auth\Adapter\Stream

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Adapter/Stream.zep">Source on GitHub</a>

JSON file-backed adapter.

The file must contain a JSON array of user records:
  [\{"id":1,"email":"a@b","password":"&lt;hashed>"\}, ...]

@extends AbstractArrayAdapter&lt;StreamAdapterConfig>

<div class="api-tree">

- [`Phalcon\Auth\Adapter\AbstractAdapter`](#authadapterabstractadapter)
- [`Phalcon\Auth\Adapter\AbstractArrayAdapter`](#authadapterabstractarrayadapter)
- **`Phalcon\Auth\Adapter\Stream`**

</div>

__Uses__ `InvalidArgumentException` · `Phalcon\Auth\Adapter\Config\StreamAdapterConfig` · `Phalcon\Auth\Exception` · `Phalcon\Auth\Exceptions\FileCannotRead` · `Phalcon\Auth\Exceptions\FileDoesNotContainJson` · `Phalcon\Auth\Exceptions\FileDoesNotExist` · `Phalcon\Auth\Exceptions\FileNotValidJson` · `Phalcon\Auth\Internal\Options` · `Phalcon\Contracts\Encryption\Security\Security` · `Phalcon\Support\Helper\Json\Decode`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authadapterstream-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">Security</span> <span class="sv">$hasher</span>,</span><span class="prm"><span class="st">StreamAdapterConfig</span> <span class="sv">$config</span></span>)</code>
</a>
<a class="api-item" href="#authadapterstream-fromoptions">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">fromOptions</span>(<span class="prm"><span class="st">Security</span> <span class="sv">$hasher</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$options</span></span>)</code>
</a>
<a class="api-item" href="#authadapterstream-loadusers">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">loadUsers</span>()</code>
<span class="desc">Loads and decodes the JSON users file. Re-read on every call - if you</span>
</a>
<a class="api-item" href="#authadapterstream-phpfileexists">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">phpFileExists</span>( <span class="st">string</span> <span class="sv">$filename</span> )</code>
</a>
<a class="api-item" href="#authadapterstream-phpfilegetcontents">
<code class="vis vis-protected">protected</code>
<code class="sig"><span class="sf">phpFileGetContents</span>( <span class="st">string</span> <span class="sv">$filename</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 2</div>

<h4 id="authadapterstream-__construct"><code>__construct()</code></h4>

```php
public function __construct(
Security $hasher,
StreamAdapterConfig $config
);
```

<h4 id="authadapterstream-fromoptions"><code>fromOptions()</code></h4>

```php
public static function fromOptions(
Security $hasher,
array $options
): static;
```

<div class="api-group">Protected · 3</div>

<h4 id="authadapterstream-loadusers"><code>loadUsers()</code></h4>

```php
protected function loadUsers(): array;
```

Loads and decodes the JSON users file. Re-read on every call - if you
need caching, wrap it.

<h4 id="authadapterstream-phpfileexists"><code>phpFileExists()</code></h4>

```php
protected function phpFileExists( string $filename ): bool;
```

<h4 id="authadapterstream-phpfilegetcontents"><code>phpFileGetContents()</code></h4>

```php
protected function phpFileGetContents( string $filename );
```

## Auth\AuthUser

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/AuthUser.zep">Source on GitHub</a>

Lightweight value object returned by array-backed adapters (Memory, Stream)
when no application model class is configured.

<div class="api-tree">

- **`Phalcon\Auth\AuthUser`** — implements [`Phalcon\Contracts\Auth\AuthUser`](/5.14/api/phalcon_contracts/#contractsauthauthuser)

</div>

__Uses__ `Phalcon\Auth\Exceptions\DataMustContainIdKey` · `Phalcon\Contracts\Auth\AuthUser`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authauthuser-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">array</span> <span class="sv">$data</span> )</code>
</a>
<a class="api-item" href="#authauthuser-getauthidentifier">
<code class="vis vis-public">public</code>
<code class="ret">int|string</code>
<code class="sig"><span class="sf">getAuthIdentifier</span>()</code>
</a>
<a class="api-item" href="#authauthuser-getauthpassword">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getAuthPassword</span>()</code>
</a>
<a class="api-item" href="#authauthuser-toarray">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">toArray</span>()</code>
<span class="desc">Returns the underlying data array.</span>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$data</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 4</div>

<h4 id="authauthuser-__construct"><code>__construct()</code></h4>

```php
public function __construct( array $data );
```

<h4 id="authauthuser-getauthidentifier"><code>getAuthIdentifier()</code></h4>

```php
public function getAuthIdentifier(): int|string;
```

<h4 id="authauthuser-getauthpassword"><code>getAuthPassword()</code></h4>

```php
public function getAuthPassword(): string;
```

<h4 id="authauthuser-toarray"><code>toArray()</code></h4>

```php
public function toArray(): array;
```

Returns the underlying data array.

## Auth\Cli\AuthDispatcherListener

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Cli/AuthDispatcherListener.zep">Source on GitHub</a>

This file is part of the Phalcon Framework.

(c) Phalcon Team &lt;team@phalcon.io>

For the full copyright and license information, please view the LICENSE.txt
file that was distributed with this source code.

Implementation of this file has been influenced by sinbadxiii/cphalcon-auth
@link    https://github.com/sinbadxiii/cphalcon-auth

<div class="api-tree">

- [`Phalcon\Auth\AbstractAuthDispatcherListener`](#authabstractauthdispatcherlistener)
- **`Phalcon\Auth\Cli\AuthDispatcherListener`**

</div>

__Uses__ `Phalcon\Auth\AbstractAuthDispatcherListener` · `Phalcon\Auth\Exception` · `Phalcon\Cli\Dispatcher` · `Phalcon\Events\Event`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authcliauthdispatcherlistener-beforeexecuteroute">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">beforeExecuteRoute</span>(<span class="prm"><span class="st">Event</span> <span class="sv">$event</span>,</span><span class="prm"><span class="st">Dispatcher</span> <span class="sv">$dispatcher</span></span>)</code>
</a>
<a class="api-item" href="#authcliauthdispatcherlistener-getactiontype">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getActionType</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="authcliauthdispatcherlistener-beforeexecuteroute"><code>beforeExecuteRoute()</code></h4>

```php
public function beforeExecuteRoute(
Event $event,
Dispatcher $dispatcher
): bool;
```

<div class="api-group">Protected · 1</div>

<h4 id="authcliauthdispatcherlistener-getactiontype"><code>getActionType()</code></h4>

```php
protected function getActionType(): string;
```

## Auth\Exception

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Exception.zep">Source on GitHub</a>

Exceptions thrown in Phalcon\Auth will use this class

<div class="api-tree">

- `\Exception`
- **`Phalcon\Auth\Exception`**
- [`Phalcon\Auth\Exceptions\AccessDenied`](#authexceptionsaccessdenied)
- [`Phalcon\Auth\Exceptions\ConfigRequiresNonEmptyValue`](#authexceptionsconfigrequiresnonemptyvalue)
- [`Phalcon\Auth\Exceptions\DataMustContainIdKey`](#authexceptionsdatamustcontainidkey)
- [`Phalcon\Auth\Exceptions\DoesNotImplement`](#authexceptionsdoesnotimplement)
- [`Phalcon\Auth\Exceptions\FileCannotRead`](#authexceptionsfilecannotread)
- [`Phalcon\Auth\Exceptions\FileDoesNotContainJson`](#authexceptionsfiledoesnotcontainjson)
- [`Phalcon\Auth\Exceptions\FileDoesNotExist`](#authexceptionsfiledoesnotexist)
- [`Phalcon\Auth\Exceptions\FileNotValidJson`](#authexceptionsfilenotvalidjson)

</div>

## Auth\Exceptions\AccessDenied

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Exceptions/AccessDenied.zep">Source on GitHub</a>

Access denied exception

<div class="api-tree">

- `\Exception`
- [`Phalcon\Auth\Exception`](#authexception)
- **`Phalcon\Auth\Exceptions\AccessDenied`**

</div>

__Uses__ `Phalcon\Auth\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authexceptionsaccessdenied-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$type</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$name</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="authexceptionsaccessdenied-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $type,
string $name
);
```

## Auth\Exceptions\ConfigRequiresNonEmptyValue

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Exceptions/ConfigRequiresNonEmptyValue.zep">Source on GitHub</a>

Config requires non-empty value

<div class="api-tree">

- `\Exception`
- [`Phalcon\Auth\Exception`](#authexception)
- **`Phalcon\Auth\Exceptions\ConfigRequiresNonEmptyValue`**

</div>

__Uses__ `Phalcon\Auth\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authexceptionsconfigrequiresnonemptyvalue-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$configName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$configKey</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$suffix</span><span class="sm"> = &quot;&quot;</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="authexceptionsconfigrequiresnonemptyvalue-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $configName,
string $configKey,
string $suffix = ""
);
```

## Auth\Exceptions\DataMustContainIdKey

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Exceptions/DataMustContainIdKey.zep">Source on GitHub</a>

AuthUser data must contain "id"

<div class="api-tree">

- `\Exception`
- [`Phalcon\Auth\Exception`](#authexception)
- **`Phalcon\Auth\Exceptions\DataMustContainIdKey`**

</div>

__Uses__ `Phalcon\Auth\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authexceptionsdatamustcontainidkey-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="authexceptionsdatamustcontainidkey-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Auth\Exceptions\DoesNotImplement

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Exceptions/DoesNotImplement.zep">Source on GitHub</a>

Does not implement interface

<div class="api-tree">

- `\Exception`
- [`Phalcon\Auth\Exception`](#authexception)
- **`Phalcon\Auth\Exceptions\DoesNotImplement`**

</div>

__Uses__ `Phalcon\Auth\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authexceptionsdoesnotimplement-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$type</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$name</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="authexceptionsdoesnotimplement-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $type,
string $name
);
```

## Auth\Exceptions\FileCannotRead

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Exceptions/FileCannotRead.zep">Source on GitHub</a>

Cannot read file

<div class="api-tree">

- `\Exception`
- [`Phalcon\Auth\Exception`](#authexception)
- **`Phalcon\Auth\Exceptions\FileCannotRead`**

</div>

__Uses__ `Phalcon\Auth\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authexceptionsfilecannotread-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$path</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="authexceptionsfilecannotread-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $path );
```

## Auth\Exceptions\FileDoesNotContainJson

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Exceptions/FileDoesNotContainJson.zep">Source on GitHub</a>

File does not contain a JSON array

<div class="api-tree">

- `\Exception`
- [`Phalcon\Auth\Exception`](#authexception)
- **`Phalcon\Auth\Exceptions\FileDoesNotContainJson`**

</div>

__Uses__ `Phalcon\Auth\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authexceptionsfiledoesnotcontainjson-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$path</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="authexceptionsfiledoesnotcontainjson-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $path );
```

## Auth\Exceptions\FileDoesNotExist

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Exceptions/FileDoesNotExist.zep">Source on GitHub</a>

File does not exist

<div class="api-tree">

- `\Exception`
- [`Phalcon\Auth\Exception`](#authexception)
- **`Phalcon\Auth\Exceptions\FileDoesNotExist`**

</div>

__Uses__ `Phalcon\Auth\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authexceptionsfiledoesnotexist-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$path</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="authexceptionsfiledoesnotexist-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $path );
```

## Auth\Exceptions\FileNotValidJson

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Exceptions/FileNotValidJson.zep">Source on GitHub</a>

Not a valid JSON

<div class="api-tree">

- `\Exception`
- [`Phalcon\Auth\Exception`](#authexception)
- **`Phalcon\Auth\Exceptions\FileNotValidJson`**

</div>

__Uses__ `Phalcon\Auth\Exception` · `Throwable`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authexceptionsfilenotvalidjson-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$path</span>,</span><span class="prm"><span class="st">Throwable</span> <span class="sv">$ex</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="authexceptionsfilenotvalidjson-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $path,
Throwable $ex
);
```

## Auth\Guard\AbstractGuard

<span class="badge badge--abstract">Abstract</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Guard/AbstractGuard.zep">Source on GitHub</a>

@template TConfig of GuardConfig

<div class="api-tree">

- [`Phalcon\Events\AbstractEventsAware`](/5.14/api/phalcon_events/#eventsabstracteventsaware)
- **`Phalcon\Auth\Guard\AbstractGuard`** — implements [`Phalcon\Contracts\Auth\Guard\Guard`](/5.14/api/phalcon_contracts/#contractsauthguardguard)
- [`Phalcon\Auth\Guard\Session`](#authguardsession)
- [`Phalcon\Auth\Guard\Token`](#authguardtoken)

</div>

__Uses__ `Phalcon\Contracts\Auth\Adapter\Adapter` · `Phalcon\Contracts\Auth\AuthUser` · `Phalcon\Contracts\Auth\Guard\Guard` · `Phalcon\Contracts\Auth\Guard\GuardConfig` · `Phalcon\Events\AbstractEventsAware`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authguardabstractguard-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">Adapter</span> <span class="sv">$adapter</span>,</span><span class="prm"><span class="st">GuardConfig</span> <span class="sv">$config</span></span>)</code>
</a>
<a class="api-item" href="#authguardabstractguard-check">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">check</span>()</code>
</a>
<a class="api-item" href="#authguardabstractguard-getadapter">
<code class="vis vis-public">public</code>
<code class="ret">Adapter</code>
<code class="sig"><span class="sf">getAdapter</span>()</code>
</a>
<a class="api-item" href="#authguardabstractguard-getconfig">
<code class="vis vis-public">public</code>
<code class="ret">GuardConfig</code>
<code class="sig"><span class="sf">getConfig</span>()</code>
<span class="desc">Returns the guard configuration object.</span>
</a>
<a class="api-item" href="#authguardabstractguard-getlastuserattempted">
<code class="vis vis-public">public</code>
<code class="ret">AuthUser|null</code>
<code class="sig"><span class="sf">getLastUserAttempted</span>()</code>
</a>
<a class="api-item" href="#authguardabstractguard-guest">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">guest</span>()</code>
</a>
<a class="api-item" href="#authguardabstractguard-hasuser">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">hasUser</span>()</code>
</a>
<a class="api-item" href="#authguardabstractguard-id">
<code class="vis vis-public">public</code>
<code class="ret">int|string|null</code>
<code class="sig"><span class="sf">id</span>()</code>
</a>
<a class="api-item" href="#authguardabstractguard-setadapter">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">setAdapter</span>( <span class="st">Adapter</span> <span class="sv">$adapter</span> )</code>
</a>
<a class="api-item" href="#authguardabstractguard-setuser">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">setUser</span>( <span class="st">AuthUser</span> <span class="sv">$user</span> )</code>
</a>
<a class="api-item" href="#authguardabstractguard-hasvalidcredentials">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">hasValidCredentials</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$user</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$credentials</span></span>)</code>
<span class="desc">user should be ?AuthUser</span>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">Adapter</code>
<code class="sig"><span class="sv">$adapter</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">GuardConfig</code>
<code class="sig"><span class="sv">$config</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">AuthUser | null</code>
<code class="sig"><span class="sv">$lastUserAttempted</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">AuthUser | null</code>
<code class="sig"><span class="sv">$user</span><span class="sm"> = null</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 10</div>

<h4 id="authguardabstractguard-__construct"><code>__construct()</code></h4>

```php
public function __construct(
Adapter $adapter,
GuardConfig $config
);
```

<h4 id="authguardabstractguard-check"><code>check()</code></h4>

```php
public function check(): bool;
```

<h4 id="authguardabstractguard-getadapter"><code>getAdapter()</code></h4>

```php
public function getAdapter(): Adapter;
```

<h4 id="authguardabstractguard-getconfig"><code>getConfig()</code></h4>

```php
public function getConfig(): GuardConfig;
```

Returns the guard configuration object.

<h4 id="authguardabstractguard-getlastuserattempted"><code>getLastUserAttempted()</code></h4>

```php
public function getLastUserAttempted(): AuthUser|null;
```

<h4 id="authguardabstractguard-guest"><code>guest()</code></h4>

```php
public function guest(): bool;
```

<h4 id="authguardabstractguard-hasuser"><code>hasUser()</code></h4>

```php
public function hasUser(): bool;
```

<h4 id="authguardabstractguard-id"><code>id()</code></h4>

```php
public function id(): int|string|null;
```

<h4 id="authguardabstractguard-setadapter"><code>setAdapter()</code></h4>

```php
public function setAdapter( Adapter $adapter ): static;
```

<h4 id="authguardabstractguard-setuser"><code>setUser()</code></h4>

```php
public function setUser( AuthUser $user ): static;
```

<div class="api-group">Protected · 1</div>

<h4 id="authguardabstractguard-hasvalidcredentials"><code>hasValidCredentials()</code></h4>

```php
protected function hasValidCredentials(
mixed $user,
array $credentials
): bool;
```

user should be ?AuthUser

## Auth\Guard\Config\AbstractGuardConfig

<span class="badge badge--abstract">Abstract</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Guard/Config/AbstractGuardConfig.zep">Source on GitHub</a>

This file is part of the Phalcon Framework.

(c) Phalcon Team &lt;team@phalcon.io>

For the full copyright and license information, please view the LICENSE.txt
file that was distributed with this source code.

Implementation of this file has been influenced by sinbadxiii/cphalcon-auth
@link    https://github.com/sinbadxiii/cphalcon-auth

<div class="api-tree">

- **`Phalcon\Auth\Guard\Config\AbstractGuardConfig`** — implements [`Phalcon\Contracts\Auth\Guard\GuardConfig`](/5.14/api/phalcon_contracts/#contractsauthguardguardconfig)
- [`Phalcon\Auth\Guard\Config\SessionGuardConfig`](#authguardconfigsessionguardconfig)
- [`Phalcon\Auth\Guard\Config\TokenGuardConfig`](#authguardconfigtokenguardconfig)

</div>

__Uses__ `Phalcon\Contracts\Auth\Guard\GuardConfig`

## Auth\Guard\Config\SessionGuardConfig

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Guard/Config/SessionGuardConfig.zep">Source on GitHub</a>

Configuration for the Session guard. Holds the names under which the
session key and remember-me cookie are stored. Defaults to 'auth' and
'remember'; multi-guard apps can pass a $suffix ('web', 'admin', ...)
to derive 'auth_web' / 'remember_web' style names, or override either
full name explicitly.

<div class="api-tree">

- [`Phalcon\Auth\Guard\Config\AbstractGuardConfig`](#authguardconfigabstractguardconfig)
- **`Phalcon\Auth\Guard\Config\SessionGuardConfig`**

</div>

__Uses__ `Phalcon\Auth\Exception` · `Phalcon\Auth\Exceptions\ConfigRequiresNonEmptyValue`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authguardconfigsessionguardconfig-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$suffix</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$name</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$rememberName</span><span class="sm"> = null</span></span>)</code>
</a>
<a class="api-item" href="#authguardconfigsessionguardconfig-getname">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getName</span>()</code>
</a>
<a class="api-item" href="#authguardconfigsessionguardconfig-getremembername">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getRememberName</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 3</div>

<h4 id="authguardconfigsessionguardconfig-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $suffix = null,
string $name = null,
string $rememberName = null
);
```

<h4 id="authguardconfigsessionguardconfig-getname"><code>getName()</code></h4>

```php
public function getName(): string;
```

<h4 id="authguardconfigsessionguardconfig-getremembername"><code>getRememberName()</code></h4>

```php
public function getRememberName(): string;
```

## Auth\Guard\Config\TokenGuardConfig

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Guard/Config/TokenGuardConfig.zep">Source on GitHub</a>

This file is part of the Phalcon Framework.

(c) Phalcon Team &lt;team@phalcon.io>

For the full copyright and license information, please view the LICENSE.txt
file that was distributed with this source code.

Implementation of this file has been influenced by sinbadxiii/cphalcon-auth
@link    https://github.com/sinbadxiii/cphalcon-auth

<div class="api-tree">

- [`Phalcon\Auth\Guard\Config\AbstractGuardConfig`](#authguardconfigabstractguardconfig)
- **`Phalcon\Auth\Guard\Config\TokenGuardConfig`**

</div>

__Uses__ `Phalcon\Auth\Exception` · `Phalcon\Auth\Exceptions\ConfigRequiresNonEmptyValue`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authguardconfigtokenguardconfig-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$inputKey</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$storageKey</span></span>)</code>
</a>
<a class="api-item" href="#authguardconfigtokenguardconfig-getinputkey">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getInputKey</span>()</code>
</a>
<a class="api-item" href="#authguardconfigtokenguardconfig-getstoragekey">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getStorageKey</span>()</code>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$inputKey</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$storageKey</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 3</div>

<h4 id="authguardconfigtokenguardconfig-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $inputKey,
string $storageKey
);
```

<h4 id="authguardconfigtokenguardconfig-getinputkey"><code>getInputKey()</code></h4>

```php
public function getInputKey(): string;
```

<h4 id="authguardconfigtokenguardconfig-getstoragekey"><code>getStorageKey()</code></h4>

```php
public function getStorageKey(): string;
```

## Auth\Guard\GuardLocator

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Guard/GuardLocator.zep">Source on GitHub</a>

Service locator for Phalcon\Auth guards. Utilizes the container to obtain
the service. For Phalcon\Container\Container one can use autowiring; for
Phalcon\Di\Di, register the guards in it before resolution.

@extends AbstractLocator&lt;Guard>

<div class="api-tree">

- [`Phalcon\Support\AbstractLocator`](/5.14/api/phalcon_support/#supportabstractlocator)
- **`Phalcon\Auth\Guard\GuardLocator`**

</div>

__Uses__ `Phalcon\Contracts\Auth\Guard\Guard` · `Phalcon\Support\AbstractLocator`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authguardguardlocator-getexceptionclass">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getExceptionClass</span>()</code>
</a>
<a class="api-item" href="#authguardguardlocator-getinterfaceclass">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getInterfaceClass</span>()</code>
</a>
<a class="api-item" href="#authguardguardlocator-getservices">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getServices</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Protected · 3</div>

<h4 id="authguardguardlocator-getexceptionclass"><code>getExceptionClass()</code></h4>

```php
protected function getExceptionClass(): string;
```

<h4 id="authguardguardlocator-getinterfaceclass"><code>getInterfaceClass()</code></h4>

```php
protected function getInterfaceClass(): string;
```

<h4 id="authguardguardlocator-getservices"><code>getServices()</code></h4>

```php
protected function getServices(): array;
```

## Auth\Guard\Session

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Guard/Session.zep">Source on GitHub</a>

@extends AbstractGuard&lt;SessionGuardConfig>

<div class="api-tree">

- [`Phalcon\Events\AbstractEventsAware`](/5.14/api/phalcon_events/#eventsabstracteventsaware)
- [`Phalcon\Auth\Guard\AbstractGuard`](#authguardabstractguard)
- **`Phalcon\Auth\Guard\Session`** — implements [`Phalcon\Contracts\Auth\Guard\GuardStateful`](/5.14/api/phalcon_contracts/#contractsauthguardguardstateful), [`Phalcon\Contracts\Auth\Guard\BasicAuth`](/5.14/api/phalcon_contracts/#contractsauthguardbasicauth)

</div>

__Uses__ `Phalcon\Auth\Exception` · `Phalcon\Auth\Exceptions\DoesNotImplement` · `Phalcon\Auth\Guard\Config\SessionGuardConfig` · `Phalcon\Auth\Internal\Options` · `Phalcon\Contracts\Auth\Adapter\Adapter` · `Phalcon\Contracts\Auth\Adapter\RememberAdapter` · `Phalcon\Contracts\Auth\AuthRemember` · `Phalcon\Contracts\Auth\AuthUser` · `Phalcon\Contracts\Auth\Guard\BasicAuth` · `Phalcon\Contracts\Auth\Guard\GuardStateful` · `Phalcon\Contracts\Auth\RememberToken` · `Phalcon\Contracts\Container\Service\Collection` · `Phalcon\Di\DiInterface` · `Phalcon\Http\RequestInterface` · `Phalcon\Http\Response\CookiesInterface` · `Phalcon\Session\ManagerInterface` · `Phalcon\Support\Helper\Json\Encode`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authguardsession-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">Adapter</span> <span class="sv">$adapter</span>,</span><span class="prm"><span class="st">RequestInterface</span> <span class="sv">$request</span>,</span><span class="prm"><span class="st">CookiesInterface</span> <span class="sv">$cookies</span>,</span><span class="prm"><span class="st">SessionManagerInterface</span> <span class="sv">$session</span>,</span><span class="prm"><span class="st">SessionGuardConfig</span> <span class="sv">$config</span><span class="sm"> = null</span></span>)</code>
</a>
<a class="api-item" href="#authguardsession-attempt">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">attempt</span>(<span class="prm"><span class="st">array</span> <span class="sv">$credentials</span><span class="sm"> = []</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$remember</span><span class="sm"> = false</span></span>)</code>
</a>
<a class="api-item" href="#authguardsession-basic">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">basic</span>(<span class="prm"><span class="st">string</span> <span class="sv">$field</span><span class="sm"> = &quot;email&quot;</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$extraConditions</span><span class="sm"> = []</span></span>)</code>
</a>
<a class="api-item" href="#authguardsession-fromoptions">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">fromOptions</span>(<span class="prm"><span class="st">Adapter</span> <span class="sv">$adapter</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$container</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$options</span></span>)</code>
</a>
<a class="api-item" href="#authguardsession-getname">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getName</span>()</code>
</a>
<a class="api-item" href="#authguardsession-getremembername">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getRememberName</span>()</code>
</a>
<a class="api-item" href="#authguardsession-login">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">login</span>(<span class="prm"><span class="st">AuthUser</span> <span class="sv">$user</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$remember</span><span class="sm"> = false</span></span>)</code>
</a>
<a class="api-item" href="#authguardsession-loginbyid">
<code class="vis vis-public">public</code>
<code class="ret">false|AuthUser</code>
<code class="sig"><span class="sf">loginById</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$id</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$remember</span><span class="sm"> = false</span></span>)</code>
</a>
<a class="api-item" href="#authguardsession-logout">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">logout</span>()</code>
</a>
<a class="api-item" href="#authguardsession-once">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">once</span>( <span class="st">array</span> <span class="sv">$credentials</span><span class="sm"> = []</span> )</code>
</a>
<a class="api-item" href="#authguardsession-oncebasic">
<code class="vis vis-public">public</code>
<code class="ret">false|AuthUser</code>
<code class="sig"><span class="sf">onceBasic</span>(<span class="prm"><span class="st">string</span> <span class="sv">$field</span><span class="sm"> = &quot;email&quot;</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$extraConditions</span><span class="sm"> = []</span></span>)</code>
</a>
<a class="api-item" href="#authguardsession-user">
<code class="vis vis-public">public</code>
<code class="ret">AuthUser|null</code>
<code class="sig"><span class="sf">user</span>()</code>
</a>
<a class="api-item" href="#authguardsession-validate">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">validate</span>( <span class="st">array</span> <span class="sv">$credentials</span><span class="sm"> = []</span> )</code>
</a>
<a class="api-item" href="#authguardsession-viaremember">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">viaRemember</span>()</code>
</a>
<a class="api-item" href="#authguardsession-attemptbasic">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">attemptBasic</span>(<span class="prm"><span class="st">string</span> <span class="sv">$field</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$extraConditions</span><span class="sm"> = []</span></span>)</code>
</a>
<a class="api-item" href="#authguardsession-basiccredentials">
<code class="vis vis-protected">protected</code>
<code class="ret">array|null</code>
<code class="sig"><span class="sf">basicCredentials</span>( <span class="st">string</span> <span class="sv">$field</span> )</code>
</a>
<a class="api-item" href="#authguardsession-createremembertoken">
<code class="vis vis-protected">protected</code>
<code class="ret">RememberToken</code>
<code class="sig"><span class="sf">createRememberToken</span>( <span class="st">AuthUser</span> <span class="sv">$user</span> )</code>
</a>
<a class="api-item" href="#authguardsession-recaller">
<code class="vis vis-protected">protected</code>
<code class="ret">UserRemember|null</code>
<code class="sig"><span class="sf">recaller</span>()</code>
</a>
<a class="api-item" href="#authguardsession-rememberuser">
<code class="vis vis-protected">protected</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">rememberUser</span>( <span class="st">AuthUser</span> <span class="sv">$user</span> )</code>
</a>
<a class="api-item" href="#authguardsession-userfromrecaller">
<code class="vis vis-protected">protected</code>
<code class="ret">AuthUser|null</code>
<code class="sig"><span class="sf">userFromRecaller</span>( <span class="st">UserRemember</span> <span class="sv">$recaller</span> )</code>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">CookiesInterface</code>
<code class="sig"><span class="sv">$cookies</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">RequestInterface</code>
<code class="sig"><span class="sv">$request</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">SessionManagerInterface</code>
<code class="sig"><span class="sv">$session</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sv">$viaRemember</span><span class="sm"> = false</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 14</div>

<h4 id="authguardsession-__construct"><code>__construct()</code></h4>

```php
public function __construct(
Adapter $adapter,
RequestInterface $request,
CookiesInterface $cookies,
SessionManagerInterface $session,
SessionGuardConfig $config = null
);
```

<h4 id="authguardsession-attempt"><code>attempt()</code></h4>

```php
public function attempt(
array $credentials = [],
bool $remember = false
): bool;
```

<h4 id="authguardsession-basic"><code>basic()</code></h4>

```php
public function basic(
string $field = "email",
array $extraConditions = []
): bool;
```

<h4 id="authguardsession-fromoptions"><code>fromOptions()</code></h4>

```php
public static function fromOptions(
Adapter $adapter,
mixed $container,
array $options
): static;
```

<h4 id="authguardsession-getname"><code>getName()</code></h4>

```php
public function getName(): string;
```

<h4 id="authguardsession-getremembername"><code>getRememberName()</code></h4>

```php
public function getRememberName(): string;
```

<h4 id="authguardsession-login"><code>login()</code></h4>

```php
public function login(
AuthUser $user,
bool $remember = false
): void;
```

<h4 id="authguardsession-loginbyid"><code>loginById()</code></h4>

```php
public function loginById(
mixed $id,
bool $remember = false
): false|AuthUser;
```

<h4 id="authguardsession-logout"><code>logout()</code></h4>

```php
public function logout(): void;
```

<h4 id="authguardsession-once"><code>once()</code></h4>

```php
public function once( array $credentials = [] ): bool;
```

<h4 id="authguardsession-oncebasic"><code>onceBasic()</code></h4>

```php
public function onceBasic(
string $field = "email",
array $extraConditions = []
): false|AuthUser;
```

<h4 id="authguardsession-user"><code>user()</code></h4>

```php
public function user(): AuthUser|null;
```

<h4 id="authguardsession-validate"><code>validate()</code></h4>

```php
public function validate( array $credentials = [] ): bool;
```

<h4 id="authguardsession-viaremember"><code>viaRemember()</code></h4>

```php
public function viaRemember(): bool;
```

<div class="api-group">Protected · 6</div>

<h4 id="authguardsession-attemptbasic"><code>attemptBasic()</code></h4>

```php
protected function attemptBasic(
string $field,
array $extraConditions = []
): bool;
```

<h4 id="authguardsession-basiccredentials"><code>basicCredentials()</code></h4>

```php
protected function basicCredentials( string $field ): array|null;
```

<h4 id="authguardsession-createremembertoken"><code>createRememberToken()</code></h4>

```php
protected function createRememberToken( AuthUser $user ): RememberToken;
```

<h4 id="authguardsession-recaller"><code>recaller()</code></h4>

```php
protected function recaller(): UserRemember|null;
```

<h4 id="authguardsession-rememberuser"><code>rememberUser()</code></h4>

```php
protected function rememberUser( AuthUser $user ): void;
```

<h4 id="authguardsession-userfromrecaller"><code>userFromRecaller()</code></h4>

```php
protected function userFromRecaller( UserRemember $recaller ): AuthUser|null;
```

## Auth\Guard\Token

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Guard/Token.zep">Source on GitHub</a>

@extends AbstractGuard&lt;TokenGuardConfig>

<div class="api-tree">

- [`Phalcon\Events\AbstractEventsAware`](/5.14/api/phalcon_events/#eventsabstracteventsaware)
- [`Phalcon\Auth\Guard\AbstractGuard`](#authguardabstractguard)
- **`Phalcon\Auth\Guard\Token`**

</div>

__Uses__ `Phalcon\Auth\Guard\Config\TokenGuardConfig` · `Phalcon\Auth\Internal\Options` · `Phalcon\Contracts\Auth\Adapter\Adapter` · `Phalcon\Contracts\Auth\AuthUser` · `Phalcon\Contracts\Container\Service\Collection` · `Phalcon\Di\DiInterface` · `Phalcon\Http\RequestInterface`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authguardtoken-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">Adapter</span> <span class="sv">$adapter</span>,</span><span class="prm"><span class="st">RequestInterface</span> <span class="sv">$request</span>,</span><span class="prm"><span class="st">TokenGuardConfig</span> <span class="sv">$config</span></span>)</code>
</a>
<a class="api-item" href="#authguardtoken-fromoptions">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">fromOptions</span>(<span class="prm"><span class="st">Adapter</span> <span class="sv">$adapter</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$container</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$options</span></span>)</code>
</a>
<a class="api-item" href="#authguardtoken-gettokenforrequest">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getTokenForRequest</span>()</code>
</a>
<a class="api-item" href="#authguardtoken-setrequest">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">setRequest</span>( <span class="st">RequestInterface</span> <span class="sv">$request</span> )</code>
</a>
<a class="api-item" href="#authguardtoken-user">
<code class="vis vis-public">public</code>
<code class="ret">AuthUser|null</code>
<code class="sig"><span class="sf">user</span>()</code>
</a>
<a class="api-item" href="#authguardtoken-validate">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">validate</span>( <span class="st">array</span> <span class="sv">$credentials</span><span class="sm"> = []</span> )</code>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">RequestInterface</code>
<code class="sig"><span class="sv">$request</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 6</div>

<h4 id="authguardtoken-__construct"><code>__construct()</code></h4>

```php
public function __construct(
Adapter $adapter,
RequestInterface $request,
TokenGuardConfig $config
);
```

<h4 id="authguardtoken-fromoptions"><code>fromOptions()</code></h4>

```php
public static function fromOptions(
Adapter $adapter,
mixed $container,
array $options
): static;
```

<h4 id="authguardtoken-gettokenforrequest"><code>getTokenForRequest()</code></h4>

```php
public function getTokenForRequest(): string|null;
```

<h4 id="authguardtoken-setrequest"><code>setRequest()</code></h4>

```php
public function setRequest( RequestInterface $request ): static;
```

<h4 id="authguardtoken-user"><code>user()</code></h4>

```php
public function user(): AuthUser|null;
```

<h4 id="authguardtoken-validate"><code>validate()</code></h4>

```php
public function validate( array $credentials = [] ): bool;
```

## Auth\Guard\UserRemember

<span class="badge badge--final">Final</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Guard/UserRemember.zep">Source on GitHub</a>

Value object representing the contents of a remember-me cookie.

<div class="api-tree">

- **`Phalcon\Auth\Guard\UserRemember`**

</div>

__Uses__ `InvalidArgumentException` · `Phalcon\Support\Helper\Json\Decode`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authguarduserremember-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">mixed</span> <span class="sv">$payload</span> )</code>
<span class="desc">Accepts either the raw JSON cookie value (string) or the already</span>
</a>
<a class="api-item" href="#authguarduserremember-getid">
<code class="vis vis-public">public</code>
<code class="ret">int|string|null</code>
<code class="sig"><span class="sf">getId</span>()</code>
</a>
<a class="api-item" href="#authguarduserremember-gettoken">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getToken</span>()</code>
</a>
<a class="api-item" href="#authguarduserremember-getuseragent">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getUserAgent</span>()</code>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">int|string|null</code>
<code class="sig"><span class="sv">$id</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$token</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$userAgent</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 4</div>

<h4 id="authguarduserremember-__construct"><code>__construct()</code></h4>

```php
public function __construct( mixed $payload );
```

Accepts either the raw JSON cookie value (string) or the already
decoded associative array. Malformed input degrades to an empty
payload so callers can read getters without null-guarding.

<h4 id="authguarduserremember-getid"><code>getId()</code></h4>

```php
public function getId(): int|string|null;
```

<h4 id="authguarduserremember-gettoken"><code>getToken()</code></h4>

```php
public function getToken(): string;
```

<h4 id="authguarduserremember-getuseragent"><code>getUserAgent()</code></h4>

```php
public function getUserAgent(): string;
```

## Auth\Internal\Options

<span class="badge badge--final">Final</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Internal/Options.zep">Source on GitHub</a>

Internal option-parsing helpers shared by adapter / guard fromOptions()
implementations. Not part of the public API.

<div class="api-tree">

- **`Phalcon\Auth\Internal\Options`**

</div>

__Uses__ `Phalcon\Auth\Exception` · `Phalcon\Contracts\Container\Service\Collection` · `Phalcon\Di\DiInterface`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authinternaloptions-arrayoption">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">arrayOption</span>(<span class="prm"><span class="st">array</span> <span class="sv">$options</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$key</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$defaultValue</span></span>)</code>
</a>
<a class="api-item" href="#authinternaloptions-requirestring">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">requireString</span>(<span class="prm"><span class="st">array</span> <span class="sv">$options</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$key</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$context</span></span>)</code>
</a>
<a class="api-item" href="#authinternaloptions-resolveservice">
<code class="vis vis-public">public</code>
<code class="ret">object</code>
<code class="sig"><span class="sf">resolveService</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$container</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$serviceId</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$context</span></span>)</code>
<span class="desc">@template T of object</span>
</a>
<a class="api-item" href="#authinternaloptions-stringornull">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">stringOrNull</span>(<span class="prm"><span class="st">array</span> <span class="sv">$options</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$key</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 4</div>

<h4 id="authinternaloptions-arrayoption"><code>arrayOption()</code></h4>

```php
public static function arrayOption(
array $options,
string $key,
array $defaultValue
): array;
```

<h4 id="authinternaloptions-requirestring"><code>requireString()</code></h4>

```php
public static function requireString(
array $options,
string $key,
string $context
): string;
```

<h4 id="authinternaloptions-resolveservice"><code>resolveService()</code></h4>

```php
public static function resolveService(
mixed $container,
string $serviceId,
string $context
): object;
```

@template T of object

<h4 id="authinternaloptions-stringornull"><code>stringOrNull()</code></h4>

```php
public static function stringOrNull(
array $options,
string $key
): string|null;
```

## Auth\Manager

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Manager.zep">Source on GitHub</a>

Composes guards (authentication) and access gates (authorization)
behind a single facade. Guard-specific behavior is reached through
Manager::guard(); callers narrow with instanceof against the
relevant capability interface (GuardStateful, BasicAuth, etc.).

<div class="api-tree">

- **`Phalcon\Auth\Manager`** — implements [`Phalcon\Contracts\Auth\Manager`](/5.14/api/phalcon_contracts/#contractsauthmanager)

</div>

__Uses__ `Phalcon\Auth\Access\AccessLocator` · `Phalcon\Contracts\Auth\Access\Access` · `Phalcon\Contracts\Auth\Adapter\Adapter` · `Phalcon\Contracts\Auth\AuthUser` · `Phalcon\Contracts\Auth\Guard\Guard` · `Phalcon\Contracts\Auth\Guard\GuardStateful` · `Phalcon\Contracts\Auth\Manager`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authmanager-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">AccessLocator</span> <span class="sv">$accessFactory</span> )</code>
</a>
<a class="api-item" href="#authmanager-access">
<code class="vis vis-public">public</code>
<code class="ret">self</code>
<code class="sig"><span class="sf">access</span>( <span class="st">string</span> <span class="sv">$accessName</span> )</code>
</a>
<a class="api-item" href="#authmanager-addaccesslist">
<code class="vis vis-public">public</code>
<code class="ret">self</code>
<code class="sig"><span class="sf">addAccessList</span>( <span class="st">array</span> <span class="sv">$accessList</span> )</code>
</a>
<a class="api-item" href="#authmanager-addguard">
<code class="vis vis-public">public</code>
<code class="ret">self</code>
<code class="sig"><span class="sf">addGuard</span>(<span class="prm"><span class="st">string</span> <span class="sv">$nameGuard</span>,</span><span class="prm"><span class="st">Guard</span> <span class="sv">$guard</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$isDefault</span><span class="sm"> = false</span></span>)</code>
</a>
<a class="api-item" href="#authmanager-attempt">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">attempt</span>(<span class="prm"><span class="st">array</span> <span class="sv">$credentials</span><span class="sm"> = []</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$remember</span><span class="sm"> = false</span></span>)</code>
</a>
<a class="api-item" href="#authmanager-check">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">check</span>()</code>
</a>
<a class="api-item" href="#authmanager-except">
<code class="vis vis-public">public</code>
<code class="ret">self</code>
<code class="sig"><span class="sf">except</span>( <span class="st">string</span> <span class="sv">$actions</span> )</code>
</a>
<a class="api-item" href="#authmanager-getaccess">
<code class="vis vis-public">public</code>
<code class="ret">Access|null</code>
<code class="sig"><span class="sf">getAccess</span>()</code>
</a>
<a class="api-item" href="#authmanager-getaccesslist">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getAccessList</span>()</code>
</a>
<a class="api-item" href="#authmanager-getdefaultguard">
<code class="vis vis-public">public</code>
<code class="ret">Guard|null</code>
<code class="sig"><span class="sf">getDefaultGuard</span>()</code>
</a>
<a class="api-item" href="#authmanager-getguards">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getGuards</span>()</code>
</a>
<a class="api-item" href="#authmanager-guard">
<code class="vis vis-public">public</code>
<code class="ret">Guard</code>
<code class="sig"><span class="sf">guard</span>( <span class="st">string</span> <span class="sv">$name</span><span class="sm"> = null</span> )</code>
</a>
<a class="api-item" href="#authmanager-id">
<code class="vis vis-public">public</code>
<code class="ret">int|string|null</code>
<code class="sig"><span class="sf">id</span>()</code>
</a>
<a class="api-item" href="#authmanager-logout">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">logout</span>()</code>
</a>
<a class="api-item" href="#authmanager-only">
<code class="vis vis-public">public</code>
<code class="ret">self</code>
<code class="sig"><span class="sf">only</span>( <span class="st">string</span> <span class="sv">$actions</span> )</code>
</a>
<a class="api-item" href="#authmanager-setaccess">
<code class="vis vis-public">public</code>
<code class="ret">self</code>
<code class="sig"><span class="sf">setAccess</span>( <span class="st">Access</span> <span class="sv">$access</span> )</code>
</a>
<a class="api-item" href="#authmanager-setdefaultguard">
<code class="vis vis-public">public</code>
<code class="ret">self</code>
<code class="sig"><span class="sf">setDefaultGuard</span>( <span class="st">Guard</span> <span class="sv">$guard</span> )</code>
</a>
<a class="api-item" href="#authmanager-user">
<code class="vis vis-public">public</code>
<code class="ret">AuthUser|null</code>
<code class="sig"><span class="sf">user</span>()</code>
</a>
<a class="api-item" href="#authmanager-validate">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">validate</span>( <span class="st">array</span> <span class="sv">$credentials</span><span class="sm"> = []</span> )</code>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">AccessLocator</code>
<code class="sig"><span class="sv">$accessFactory</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">Access | null</code>
<code class="sig"><span class="sv">$activeAccess</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">Guard | null</code>
<code class="sig"><span class="sv">$defaultGuard</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array&lt;string, Guard&gt;</code>
<code class="sig"><span class="sv">$guards</span><span class="sm"> = []</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 19</div>

<h4 id="authmanager-__construct"><code>__construct()</code></h4>

```php
public function __construct( AccessLocator $accessFactory );
```

<h4 id="authmanager-access"><code>access()</code></h4>

```php
public function access( string $accessName ): self;
```

<h4 id="authmanager-addaccesslist"><code>addAccessList()</code></h4>

```php
public function addAccessList( array $accessList ): self;
```

<h4 id="authmanager-addguard"><code>addGuard()</code></h4>

```php
public function addGuard(
string $nameGuard,
Guard $guard,
bool $isDefault = false
): self;
```

<h4 id="authmanager-attempt"><code>attempt()</code></h4>

```php
public function attempt(
array $credentials = [],
bool $remember = false
): bool;
```

<h4 id="authmanager-check"><code>check()</code></h4>

```php
public function check(): bool;
```

<h4 id="authmanager-except"><code>except()</code></h4>

```php
public function except( string $actions ): self;
```

<h4 id="authmanager-getaccess"><code>getAccess()</code></h4>

```php
public function getAccess(): Access|null;
```

<h4 id="authmanager-getaccesslist"><code>getAccessList()</code></h4>

```php
public function getAccessList(): array;
```

<h4 id="authmanager-getdefaultguard"><code>getDefaultGuard()</code></h4>

```php
public function getDefaultGuard(): Guard|null;
```

<h4 id="authmanager-getguards"><code>getGuards()</code></h4>

```php
public function getGuards(): array;
```

<h4 id="authmanager-guard"><code>guard()</code></h4>

```php
public function guard( string $name = null ): Guard;
```

<h4 id="authmanager-id"><code>id()</code></h4>

```php
public function id(): int|string|null;
```

<h4 id="authmanager-logout"><code>logout()</code></h4>

```php
public function logout(): void;
```

<h4 id="authmanager-only"><code>only()</code></h4>

```php
public function only( string $actions ): self;
```

<h4 id="authmanager-setaccess"><code>setAccess()</code></h4>

```php
public function setAccess( Access $access ): self;
```

<h4 id="authmanager-setdefaultguard"><code>setDefaultGuard()</code></h4>

```php
public function setDefaultGuard( Guard $guard ): self;
```

<h4 id="authmanager-user"><code>user()</code></h4>

```php
public function user(): AuthUser|null;
```

<h4 id="authmanager-validate"><code>validate()</code></h4>

```php
public function validate( array $credentials = [] ): bool;
```

## Auth\ManagerFactory

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/ManagerFactory.zep">Source on GitHub</a>

Single entry-point factory that builds a fully wired Phalcon\Auth\Manager
from a config tree. Framework-shared services (RequestInterface,
CookiesInterface, SessionManagerInterface) are resolved from the injected
container so the manager wires against the real application singletons,
not separately constructed copies.

 [
     'guards' => [
         'web' => [
             'type'    => 'session',
             'default' => true,
             'adapter' => [
                 'name'    => 'model',
                 'options' => [
                     'model' => User::class
                 ],
             ],
             'options' => [],
         ],
         'api' => [
             'type'    => 'token',
             'adapter' => [
                 'name'    => 'model',
                 'options' => [
                     'model' => User::class
                 ]
             ],
             'options' => [
                 'inputKey'   => 'api_token',
                 'storageKey' => 'api_token'
             ],
         ],
     ],
     'access' => [
         'auth'  => \Phalcon\Auth\Access\Auth::class,
         'guest' => \Phalcon\Auth\Access\Guest::class,
     ],
 ]

<div class="api-tree">

- **`Phalcon\Auth\ManagerFactory`**

</div>

__Uses__ `Phalcon\Auth\Access\AccessLocator` · `Phalcon\Auth\Adapter\AdapterLocator` · `Phalcon\Auth\Guard\GuardLocator` · `Phalcon\Config\ConfigInterface` · `Phalcon\Contracts\Auth\Access\Access` · `Phalcon\Contracts\Auth\Adapter\Adapter` · `Phalcon\Contracts\Auth\Guard\Guard` · `Phalcon\Contracts\Container\Service\Collection` · `Phalcon\Di\DiInterface` · `Phalcon\Encryption\Security`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authmanagerfactory-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">Security</span> <span class="sv">$hasher</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$container</span>,</span><span class="prm"><span class="st">AdapterLocator</span> <span class="sv">$adapterLocator</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">GuardLocator</span> <span class="sv">$guardLocator</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">AccessLocator</span> <span class="sv">$accessLocator</span><span class="sm"> = null</span></span>)</code>
</a>
<a class="api-item" href="#authmanagerfactory-load">
<code class="vis vis-public">public</code>
<code class="ret">Manager</code>
<code class="sig"><span class="sf">load</span>( <span class="st">mixed</span> <span class="sv">$config</span> )</code>
</a>
<a class="api-item" href="#authmanagerfactory-buildadapter">
<code class="vis vis-protected">protected</code>
<code class="ret">Adapter</code>
<code class="sig"><span class="sf">buildAdapter</span>(<span class="prm"><span class="st">AdapterLocator</span> <span class="sv">$locator</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$cfg</span></span>)</code>
</a>
<a class="api-item" href="#authmanagerfactory-buildguard">
<code class="vis vis-protected">protected</code>
<code class="ret">Guard</code>
<code class="sig"><span class="sf">buildGuard</span>(<span class="prm"><span class="st">GuardLocator</span> <span class="sv">$locator</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$type</span>,</span><span class="prm"><span class="st">Adapter</span> <span class="sv">$adapter</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$options</span></span>)</code>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">AccessLocator</code>
<code class="sig"><span class="sv">$accessLocator</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">AdapterLocator</code>
<code class="sig"><span class="sv">$adapterLocator</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">Collection</code>
<code class="sig"><span class="sv">$container</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">GuardLocator</code>
<code class="sig"><span class="sv">$guardLocator</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">Security</code>
<code class="sig"><span class="sv">$hasher</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 2</div>

<h4 id="authmanagerfactory-__construct"><code>__construct()</code></h4>

```php
public function __construct(
Security $hasher,
mixed $container,
AdapterLocator $adapterLocator = null,
GuardLocator $guardLocator = null,
AccessLocator $accessLocator = null
);
```

<h4 id="authmanagerfactory-load"><code>load()</code></h4>

```php
public function load( mixed $config ): Manager;
```

<div class="api-group">Protected · 2</div>

<h4 id="authmanagerfactory-buildadapter"><code>buildAdapter()</code></h4>

```php
protected function buildAdapter(
AdapterLocator $locator,
array $cfg
): Adapter;
```

<h4 id="authmanagerfactory-buildguard"><code>buildGuard()</code></h4>

```php
protected function buildGuard(
GuardLocator $locator,
string $type,
Adapter $adapter,
array $options
): Guard;
```

## Auth\Mvc\AuthDispatcherListener

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Auth/Mvc/AuthDispatcherListener.zep">Source on GitHub</a>

Listener that enforces the active Phalcon\Auth access gate on each MVC
dispatch. Attach to the events manager:

  $eventsManager->attach('dispatch', new AuthDispatcherListener($manager));

No-op when no active access has been set on the manager.

<div class="api-tree">

- [`Phalcon\Auth\AbstractAuthDispatcherListener`](#authabstractauthdispatcherlistener)
- **`Phalcon\Auth\Mvc\AuthDispatcherListener`**

</div>

__Uses__ `Phalcon\Auth\AbstractAuthDispatcherListener` · `Phalcon\Auth\Exception` · `Phalcon\Events\Event` · `Phalcon\Mvc\Dispatcher`

### Method Summary

<div class="api-list">
<a class="api-item" href="#authmvcauthdispatcherlistener-beforeexecuteroute">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">beforeExecuteRoute</span>(<span class="prm"><span class="st">Event</span> <span class="sv">$event</span>,</span><span class="prm"><span class="st">Dispatcher</span> <span class="sv">$dispatcher</span></span>)</code>
</a>
<a class="api-item" href="#authmvcauthdispatcherlistener-getactiontype">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getActionType</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="authmvcauthdispatcherlistener-beforeexecuteroute"><code>beforeExecuteRoute()</code></h4>

```php
public function beforeExecuteRoute(
Event $event,
Dispatcher $dispatcher
): bool;
```

<div class="api-group">Protected · 1</div>

<h4 id="authmvcauthdispatcherlistener-getactiontype"><code>getActionType()</code></h4>

```php
protected function getActionType(): string;
```

Source: https://docs.phalcon.io/5.14/api/phalcon_auth/index.mdx
