none
Blazor Webassembly User Login RRS feed

  • Frage

  • Hallo,

    bin noch relativ neu was Blazor anbelangt.

    Ich habe folgendes Problem: ich möchte mich über eine BlazorWASM (Core Hosted) App via OIDC an einem Server anmelden, bekomme es allerdings nicht hin. Ich muss dazu sagen, dass ich absolut noch nie etwas mit User Authentication und der gleichen zu tun hatte, weshalb mir dieses Unterfangen sehr viel Schwierigkeiten bereitet.

    Ich habe also ein BlazorWebAssembly net Core hostet Projekt erstellt, und im Client-Projekt eine Login.razor welche das Login-Form enthält mit Username und Passwort und einem Anmelden-Button.

    @page "/login"
    @using Syncfusion.Blazor.Inputs
    @using Syncfusion.Blazor.Buttons
    @using MyApp.Shared;
    @inject HttpClient Http
    
    
    <div id="input-form">
        <h3>Login</h3>
    
        <SfTextBox @bind-Value="@Username" Placeholder="Benutzername" ShowClearButton=true FloatLabelType="@FloatLabelType.Auto"></SfTextBox>
        <SfTextBox @bind-Value="@Pw" ShowClearButton=true FloatLabelType="@FloatLabelType.Auto" Placeholder="Passwort"></SfTextBox>
        <SfButton ID="submit-btn" @onclick="@OnInput" CssClass="e-info">Anmelden</SfButton>
    </div>
    
    <style>
        #input-form {
            max-width: 250px;
            margin: 0 auto;
        }
    
        #submit-btn {
            margin-
        }
    </style>
    
    @code {
        public string Username { get; set; }
        public string Pw { get; set; }
    
        public async void OnInput()
        {
            // API call here
            Console.WriteLine($"{Username} {Pw}");
    
            var response = await Http.GetFromJsonAsync<User>("User");
            Console.WriteLine(response.Username);
        }
    }

    Im Server-Projekt habe ich einen LoginController.cs:

    using Microsoft.AspNetCore.Mvc;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using MyApp.Shared;
    using System.Net.Http;
    using System.Text;
    using System.Net.Http.Json;
    
    namespace MyApp.Server.Controllers
    {
        [ApiController]
        [Route("[controller]")]
        public class LoginController : ControllerBase
        {
    
            public async Task<User> GetUser()
            {
                User user = new User();
                user.Username = "test";
                user.Password = "test";
    
                HttpClient client = new HttpClient();
                var userResponse = await client.PostAsJsonAsync<User>("http://myserver.local:8888/uaa/login", user);
                var responseString = userResponse.Content.ReadAsStringAsync();
                Console.WriteLine(responseString);
                return user;
            }
    
            [HttpGet]
            public User Get()
            {
                var returnValue = GetUser();
    
                return returnValue.Result;
            }
           
       }
    }

    Und im Shared-Projekt habe ich die Klasse User.cs:

    using System;
    using System.Collections.Generic;
    using System.Text;
    
    
    namespace MyApp.Shared
    {
        public class User
        {
            public string Username { get; set; }
            public string Password { get; set; }
        }
    }

    Der Server ist erreichbar und es existiert auch schon ein Testuser "test" "test". Mit einer temporären Login Testpage welche schon existierte, kann ich mich mit diesen Daten einwandfrei anmelden. Nun versuche ich das selbe über eine Blazor WASM app, jedoch ohne Erfolg.

    Im Netz finde ich kein einfaches Walkthrough, welches jemandem der noch nie etwas mit Webentwicklung/Authentifizierung/Userverwaltung etc. zu tun hatte, Schritt für Schritt erklärt wie man sowas mit C' und BlazorWASM net core hostet realisiert.

    Kann mir jemand vielleicht auf die Sprünge helfen?


    • Bearbeitet GlobalHost Montag, 14. September 2020 12:02
    Freitag, 11. September 2020 09:22

Antworten

Alle Antworten