web-dev-qa-db-fra.com

Comment utiliser l'objet HttpContext dans Blazor côté serveur pour récupérer des informations sur l'utilisateur, l'agent utilisateur

Adresse IP, etc. Très souvent, lorsque les utilisateurs demandent comment le faire dans l'application Server Blazor, on leur dit que ce n'est pas possible, ou parfois ils proposent des solutions partielles utilisant JSInterop. Mais cela peut-il se faire sans recourir à JSInterop? Voici la réponse ...

3
enet

Dans votre démarrage> ConfigureServices:

 services.AddControllers();

Dans votre démarrage> Configurer:

  app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
                endpoints.MapBlazorHub();
                endpoints.MapFallbackToPage("/_Host");
            });

ajouter un nom de dossier: Contrôleurs

ajoutez un nom de contrôleur: InitController

ajoutez une méthode comme celle-ci:

   [Route("[controller]/[action]")]
    public class InitController : Controller
    {
    public IActionResult UserInfo(string redirectUri)
        {
           var request = Request.HttpContext;


            return LocalRedirect(redirectUri);
        }
}

dans la demande variable, toutes les données existent

enfin pour rediriger l'utilisateur depuis des pages ou des composants, utilisez ce code:

@inject NavigationManager NavigationManager

@code{
     protected override Task OnInitializedAsync ()
        {       var uri = new Uri(NavigationManager.Uri)
            .GetComponents(UriComponents.PathAndQuery, UriFormat.Unescaped);

           var query = $"?redirectUri={Uri.EscapeDataString(uri)}";
          NavigationManager.NavigateTo("/Init/UserInfo" + query, forceLoad: true);
           StateHasChanged();

            return base.OnInitializedAsync();


        }
}
0
Soroush Asadi