Aller au contenu principal

Blazor MAUI

Configuration d'une application Blazor Maui

"wwwroot/index.html
<head>
...
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap" rel="stylesheet" />
<link href="_content/MudBlazor/MudBlazor.min.css" rel="stylesheet" />
</head>
<body>

...


<script src="_content/MudBlazor/MudBlazor.min.js"></script>

</body>
MauiProgram.cs
builder.Services.AddCoreBlazorApp();

Configuration de la persistance

Elle permet de stocker l'état de la session soit dans le local storage soit dans le session storage

MauiProgram.cs
builder.Services.AddScoped<ISessionPersistence, SessionPersistenceMaui>();
Information

CoreBlazorApp ne propose pas en standard la classe de stockage pour .NET MAUI Il faut la développer avec un code comme celui-ci par exemple:

    public class SessionPersistenceMaui : ISessionPersistence
{


public SessionPersistenceMaui()
{
}
public async Task Save(string key, string value)
{
await SecureStorage.Default.SetAsync(key, value);
}

public async Task<string> Get(string key)
{
return await SecureStorage.Default.GetAsync(key);

}
}

Configuration du chiffrement.

C'est le chiffrement qui est utilisé pour les données stockées dans le local storage ou le session storage

program.cs
builder.Services.AddScoped<ICryptoService, CryptoFromNativeNetCore>();

Configuration de l'url de rappel

La gestion des urls de rappel étant spécifique, CoreBlazorApp ne propose pas cette fonctionnalité. Il faut donc créer une classe comme cela

program.cs
public class MauiAuthenticator : ILoginBeSwarmService
{
public async Task<LoginAction> Login(string url, string callbackurl)
{
LoginAction result = new();

try
{
WebAuthenticatorResult res = await WebAuthenticator.Default.AuthenticateAsync(
new Uri(url),
new Uri(callbackurl));

result.CallBackUrl = new RequestUrl(callbackurl).Create(new Parameters(res.Properties));
result.Action = LoginActions.gettokens;
}
catch (TaskCanceledException)
{
}
return result;
}

}

rajouter le code suivant dans MainApplication.cs

MainApplication.cs
[Activity(NoHistory = true, LaunchMode = LaunchMode.SingleTop, Exported = true)]
[IntentFilter(new[] { Android.Content.Intent.ActionView },
Categories = new[] { Android.Content.Intent.CategoryDefault, Android.Content.Intent.CategoryBrowsable },
DataScheme = CALLBACK_SCHEME)]
public class WebAuthenticationCallbackActivity : Microsoft.Maui.Authentication.WebAuthenticatorCallbackActivity
{
const string CALLBACK_SCHEME = "com.beswarm.testmauiblazor";

}
Plateformes/Android/AndroidManifest.xml
<queries>
<intent>
<action android:name="android.support.customtabs.action.CustomTabsService" />
</intent>
</queries>

Configuration de l'authentification oauth2.

public class SecureConfig : ISecureConfig
{
public string ServiceEntryPoint { get; set; } = "https://dev.beswarm.net";
public string UserSwarm { get; set; } = "testdev";
public string ApplicationId { get; set; } = "....";
public string ClientSecret { get; set; } = "....";
public string CallBackUri { get; set; } = "com.beswarm.testmauiblazor://";
}
Information

La valeur ApplicationId et ClientSecret sont les informations obtenues après l'inscription de l'application sur la plateforme BeSwarm.

La valeur de CallBackUri soit être la même que celle indiquée dans CALLBACK_SCHEME

Attention

Ces informations sont des informations sensibles. L'application devra être en mesure de les protéger.

program.cs
builder.Services.AddSingleton<ISecureConfig, SecureConfig>();