Class

# WebUserAuthentication

<div class="rst-class">

forsearch

</div>

Passkeys

<div class="rst-class">

forsearch

</div>

Authentication

<div class="rst-class">

forsearch

</div>

TouchID

<div class="rst-class">

forsearch

</div>

FaceID

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

## Description

A control that can be dropped on to any `WebPage</api/user_interface/web/webpage>` or `WebContainer</api/user_interface/web/webcontainer>`, to initiate and handle the Passkey (WebAuthn) registration and authentication processes.

## Properties

<div class="rst-class">

table-centered_columns_3_and_4

</div>

| Name                                                     | Type                                       | Read-Only | Shared |
|----------------------------------------------------------|--------------------------------------------|-----------|--------|
| `ApplicationName<webuserauthentication.applicationname>` | `String</api/data_types/string>`           |           |        |
| `ControlID<webuserauthentication.controlid>`             | `String</api/data_types/string>`           | ✓         |        |
| `Domain<webuserauthentication.domain>`                   | `String</api/data_types/string>`           |           |        |
| `Enabled<webuserauthentication.enabled>`                 | `Boolean</api/data_types/boolean>`         |           |        |
| `IsAvailable<webuserauthentication.isavailable>`         | `Boolean</api/data_types/boolean>`         | ✓         | ✓      |
| `Name<webuserauthentication.name>`                       | `String</api/data_types/string>`           | ✓         |        |
| `Page<webuserauthentication.page>`                       | `WebPage</api/user_interface/web/webpage>` | ✓         |        |
| `PanelIndex<webuserauthentication.panelindex>`           | `Integer</api/data_types/integer>`         |           |        |
| `Parent<webuserauthentication.parent>`                   | `WebView</api/user_interface/web/webview>` | ✓         |        |
| `Timeout<webuserauthentication.timeout>`                 | `Integer</api/data_types/integer>`         |           |        |

## Methods

<div class="rst-class">

table-centered_column_4

</div>

| Name                                                         | Parameters                                                                                                                                        | Returns | Shared |
|--------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------|---------|--------|
| `Authenticate<webuserauthentication.authenticate>`           | `Optional</api/language/optional>` allowCredentials() As `String</api/data_types/string>`                                                         |         |        |
| `Close<webuserauthentication.close>`                         |                                                                                                                                                   |         |        |
| `ExecuteJavaScript<webuserauthentication.executejavascript>` | script As `String</api/data_types/string>`                                                                                                        |         |        |
| `GoToURL<webuserauthentication.gotourl>`                     | url As `String</api/data_types/string>`, inNewWindow As `Boolean</api/data_types/boolean>` = `False</api/language/false>`                         |         |        |
| `Register<webuserauthentication.register>`                   | userId As `String</api/data_types/string>`, username As `String</api/data_types/string>` = ", displayName As `String</api/data_types/string>` = " |         |        |
| `UpdateBrowser<webuserauthentication.updatebrowser>`         |                                                                                                                                                   |         |        |

## Events

<div class="rst-class">

table-centered_column_4

</div>

| Name                                                                     | Parameters                                                                                                                                                 | Returns                                                             |
|--------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------|
| `AuthenticationSucceeded<webuserauthentication.authenticationsucceeded>` | userId As `String</api/data_types/string>`, credentialId As `String</api/data_types/string>`, authenticationAttempts As `Integer</api/data_types/integer>` |                                                                     |
| `Closed<webuserauthentication.closed>`                                   |                                                                                                                                                            |                                                                     |
| `CredentialRequested<webuserauthentication.credentialrequested>`         | userId As `String</api/data_types/string>`, credentialId As `String</api/data_types/string>`                                                               | `WebAuthenticationCredential</api/web/webauthenticationcredential>` |
| `Error<webuserauthentication.error>`                                     | message As `String</api/data_types/string>`                                                                                                                |                                                                     |
| `Opening<webuserauthentication.opening>`                                 |                                                                                                                                                            |                                                                     |
| `RegistrationSucceeded<webuserauthentication.registrationsucceeded>`     | userId As `String</api/data_types/string>`, credential As `WebAuthenticationCredential</api/web/webauthenticationcredential>`                              |                                                                     |

## Property descriptions

<div id="webuserauthentication.applicationname">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WebUserAuthentication.ApplicationName

**ApplicationName** As `String</api/data_types/string>`

> Displayed by some authenticators. This helps the user confirm they are accessing the app they think they are accessing.

<div id="webuserauthentication.controlid">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WebUserAuthentication.ControlID

**ControlID** As `String</api/data_types/string>`

> Identifies the control on a per session basis.
>
> This property is read-only.

<div id="webuserauthentication.domain">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WebUserAuthentication.Domain

**Domain** As `String</api/data_types/string>`

> The domain name used by the authenticator device to discover what credentials can be used, such as *localhost* or *subdomain.example.com*.
>
> In the context of the WebAuthn specification, this is known as the *Relying Party ID* or *rpID*.

<div id="webuserauthentication.enabled">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WebUserAuthentication.Enabled

**Enabled** As `Boolean</api/data_types/boolean>`

> When `True</api/language/true>` the <span class="title-ref">WebUserAuthentication</span> object will respond. When `False</api/language/false>`, the <span class="title-ref">WebUserAuthentication</span> object will not respond.

<div id="webuserauthentication.isavailable">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WebUserAuthentication.IsAvailable

**IsAvailable** As `Boolean</api/data_types/boolean>`

> Indicates whether or not the browser supports passkey authentication or not.
>
> <div class="important">
>
> <div class="title">
>
> Important
>
> </div>
>
> This will return `True</api/language/true>` even if the user has installed an extension that prevents the authenticator from being used because technically the browser itself still supports web authentication. To catch this situation, make sure you have implemented the `Error<webuserauthentication.error>` event to check the *Message* parameter for a value that indicates that it has been disabled such as "WebAuthn disabled". This value will vary by browser.
>
> </div>
>
> This property is read-only and shared.

<div id="webuserauthentication.name">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WebUserAuthentication.Name

**Name** As `String</api/data_types/string>`

> The name of the control.
>
> This property is read-only.

<div id="webuserauthentication.page">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WebUserAuthentication.Page

**Page** As `WebPage</api/user_interface/web/webpage>`

> Identifies the web page that contains the control.
>
> This property is read-only.

<div id="webuserauthentication.panelindex">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WebUserAuthentication.PanelIndex

**PanelIndex** As `Integer</api/data_types/integer>`

> If the control has been placed on a <span class="title-ref">WebTabPanel</span> or `WebPagePanel</api/user_interface/web/webpagepanel>` control, this is the panel (page/tab) that the control is on. If the control is not on a panel, it returns -1.
>
> The first panel is numbered zero. If the control has been placed on a panel of a <span class="title-ref">WebTabPanel</span> or `WebPagePanel</api/user_interface/web/webpagepanel>` control, it returns the panel number. If the control is not on a `WebPagePanel</api/user_interface/web/webpagepanel>` or <span class="title-ref">WebTabPanel</span>, it returns -1. If you change the PanelIndex to a nonexistent panel, the control will disappear until you give it a PanelIndex value that corresponds to a panel that exists.
>
> If you are looking to change the currently selected panel (page/tab), use `SelectedPanelIndex<webpagecontrol.selectedpanelindex>`.
>
> This code displays the panel index of the control that is on the page.
>
> ``` xojo
> MessageBox(Me.SelectedPanelIndex.ToString)
> ```

<div id="webuserauthentication.parent">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WebUserAuthentication.Parent

**Parent** As `WebView</api/user_interface/web/webview>`

> Used to get the control's parent control or page. If the parent control is a `WebContainer</api/user_interface/web/webcontainer>`, then it returns the `WebContainer</api/user_interface/web/webcontainer>`. If it is on a `WebPage</api/user_interface/web/webpage>`, it returns the `WebPage</api/user_interface/web/webpage>`.
>
> This property is read-only.

<div id="webuserauthentication.timeout">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WebUserAuthentication.Timeout

**Timeout** As `Integer</api/data_types/integer>`

> Some authenticator devices will use this property to timeout/fail if the user doesn't react in the time specified by this property. The value must is in milliseconds. It defaults to 60000.

## Method descriptions

<div id="webuserauthentication.authenticate">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WebUserAuthentication.Authenticate

**Authenticate**(`Optional</api/language/optional>` allowCredentials() As `String</api/data_types/string>`)

> When the user wishes to login, this method asks the browser to begin authentication. If the *allowedCredentials* parameter is passed, Xojo will ask the authenticator device to only allow the provided credentials IDs to be used for authentication.
>
> In this example, a <span class="title-ref">WebUserAuthentication</span> object named *Authenticate* is on the layout. The `CredentialRequested<webuserauthentication.credentialrequested>` event will then be called so that you can return the `credential</api/web/webauthenticationcredential>` for the user.
>
> ``` xojo
> Authentication.Authenticate
> ```

<div id="webuserauthentication.close">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WebUserAuthentication.Close

**Close**

> Removes the control from the page.

<div id="webuserauthentication.executejavascript">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WebUserAuthentication.ExecuteJavaScript

**ExecuteJavaScript**(script As `String</api/data_types/string>`)

> Executes the JavaScript passed. The JavaScript passed can call a JavaScript function in a WebPageSource control.
>
> The Xojo web framework uses EcmaScript 6 which is more strict than previous versions of JavaScript. For more details, see the [EcmaScript 6 documentation](https://www.ecma-international.org/ecma-262/6.0/).
>
> This code in the Pressed event of a Button displays an alert using JavaScript:
>
> ``` xojo
> Me.ExecuteJavaScript("alert('Hello!');")
> ```
>
> This code will select the text in a WebTextField (or WebTextArea):
>
> ``` xojo
> WebTextField1.ExecuteJavascript("document.getElementById('" + _
> WebTextField1.ControlID + "_inner').select();")
> ```

<div id="webuserauthentication.gotourl">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WebUserAuthentication.GoToURL

**GoToURL**(url As `String</api/data_types/string>`, inNewWindow As `Boolean</api/data_types/boolean>` = `False</api/language/false>`)

> Opens the passed *url* in place of the current web page or downloads a file. If *inNewWindow* is `True</api/language/true>`, the browser is asked to open the *url* in a new window.
>
> If the browser has popup windows disabled and *inNewWindow* is `True</api/language/true>`, the method silently fails and the page is not shown.
>
> If *inNewWindow* is `False</api/language/false>`, the running web app is replaced with the specified *url*. If you want to display an external web site within your web app, use the `WebHTMLViewer</api/user_interface/web/webhtmlviewer>` control.
>
> Display a web site in a new popup window:
>
> ``` xojo
> Me.GoToURL("http://www.wikipedia.org", True)
> ```

<div id="webuserauthentication.register">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WebUserAuthentication.Register

**Register**(userId As `String</api/data_types/string>`, username As `String</api/data_types/string>` = "", displayName As `String</api/data_types/string>` = "")

> When the user wishes to create an account for the web application, this method asks the browser to begin registration. If the *allowedCredentials* parameter is passed, Xojo will ask the authenticator device to only allow the provided credentials IDs to be used for authentication.
>
> In this example, a <span class="title-ref">WebUserAuthentication</span> object named *Authenticate* is on the layout that has a UserName `WebTextField</api/user_interface/web/webtextfield>`. The *userID* is being supplied via a Random UUID to make sure it's always unique while the *username* and *displayname* are both using whatever value the user provided in the UserName control:
>
> ``` xojo
> Authentication.Register(Random.UUID, username.Text, username.Text)
> ```

<div id="webuserauthentication.updatebrowser">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WebUserAuthentication.UpdateBrowser

**UpdateBrowser**

> Forces the current values of the control to be sent to the browser.
>
> This method is useful when you are computing values in a loop and wish to update the browser immediately rather than wait until the current method ends.
>
> This code iterates through a `RowSet</api/databases/rowset>` of `database rows</api/databases/databaserow>`, updates a `ProgressBar</api/user_interface/web/webprogressbar>` and then forces the updated `ProgressBar</api/user_interface/web/webprogressbar>` to be sent to the browser via UpdateBrowser.
>
> ``` xojo
> ProgressBar1.MaximumValue = SalesData.RowCount
>
> For Each row As DatabaseRow in SalesData
>   AnalyzeSales(row)
>   ProgressBar1.Value = ProgressBar1.Value + 1
>   ProgressBar1.UpdateBrowser
> Next
> ```

## Event descriptions

<div id="webuserauthentication.authenticationsucceeded">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WebUserAuthentication.AuthenticationSucceeded

**AuthenticationSucceeded**(userId As `String</api/data_types/string>`, credentialId As `String</api/data_types/string>`, authenticationAttempts As `Integer</api/data_types/integer>`)

> The server has received a valid authentication request with a previously stored `WebAuthenticationCredential</api/web/webauthenticationcredential>`. The *authenticationAttempts* must be assigned to the stored credential, to ensure future authentication requests cannot come from a cloned authenticator device. Not every authenticator will use this value. A zero value is common.

<div id="webuserauthentication.closed">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WebUserAuthentication.Closed

**Closed**

> The control has been removed from the page either because the page has closed or the control's Close method was called.

<div id="webuserauthentication.credentialrequested">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WebUserAuthentication.CredentialRequested

**CredentialRequested**(userId As `String</api/data_types/string>`, credentialId As `String</api/data_types/string>`) As `WebAuthenticationCredential</api/web/webauthenticationcredential>`

> During authentication the authenticator needs the credentials for the user. It is at this point that you would look in your database (or whatever storage you are using to track accounts) for an account whose *userID* and *credentialID* match those passed. You then create a `WebAuthenticationCredential</api/web/webauthenticationcredential>` and return it from this event.

<div id="webuserauthentication.error">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WebUserAuthentication.Error

**Error**(message As `String</api/data_types/string>`)

> An error has occurred during registration or authentication. The *message* is meant to the developer, not the end user.

<div id="webuserauthentication.opening">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WebUserAuthentication.Opening

**Opening**

> The control has been created and the page is opening but has not been sent to the browser yet.
>
> The Opening event handler can be used to initialize non-visual properties and settings for controls.
>
> In most cases, you should use the `Shown<webuicontrol.shown>` event to initialize controls.

<div id="webuserauthentication.registrationsucceeded">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WebUserAuthentication.RegistrationSucceeded

**RegistrationSucceeded**(userId As `String</api/data_types/string>`, credential As `WebAuthenticationCredential</api/web/webauthenticationcredential>`)

> The authenticator has received a valid registration request. It is at this point that you should create a record in your database (or whatever account storage system you are using) with the *userID* and the information stored in the *credential* passed.

## Sample code

## Compatibility

|                       |     |
|-----------------------|-----|
| **Project Types**     | Web |
| **Operating Systems** | All |

<div class="seealso">

`WebControl</api/user_interface/web/webcontrol>` parent class; `WebAuthenticationCredential</api/web/webauthenticationcredential>` class, PassKeys example project

</div>
