fixes for running on WebAssembly
This commit is contained in:
parent
fe3b42feed
commit
943adec3a0
|
@ -120,7 +120,7 @@ namespace Oqtane.Client
|
||||||
var assemblies = AppDomain.CurrentDomain.GetAssemblies().Select(a => a.GetName().Name).ToList();
|
var assemblies = AppDomain.CurrentDomain.GetAssemblies().Select(a => a.GetName().Name).ToList();
|
||||||
|
|
||||||
// get assemblies from server and load into client app domain
|
// get assemblies from server and load into client app domain
|
||||||
var zip = await http.GetByteArrayAsync($"/~/api/Installation/load");
|
var zip = await http.GetByteArrayAsync($"/api/Installation/load");
|
||||||
|
|
||||||
// asemblies and debug symbols are packaged in a zip file
|
// asemblies and debug symbols are packaged in a zip file
|
||||||
using (ZipArchive archive = new ZipArchive(new MemoryStream(zip)))
|
using (ZipArchive archive = new ZipArchive(new MemoryStream(zip)))
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Net.Http.Json;
|
using System.Net.Http.Json;
|
||||||
using System.Security.Claims;
|
using System.Security.Claims;
|
||||||
|
@ -28,12 +28,12 @@ namespace Oqtane.Providers
|
||||||
|
|
||||||
public override async Task<AuthenticationState> GetAuthenticationStateAsync()
|
public override async Task<AuthenticationState> GetAuthenticationStateAsync()
|
||||||
{
|
{
|
||||||
// get HttpClient lazily from IServiceProvider as you cannot use standard dependency injection due to the AuthenticationStateProvider being initialized prior to NavigationManager ( https://github.com/aspnet/AspNetCore/issues/11867 )
|
|
||||||
var http = _serviceProvider.GetRequiredService<HttpClient>();
|
|
||||||
string apiurl = "/~/api/User/authenticate";
|
|
||||||
User user = await http.GetFromJsonAsync<User>(apiurl);
|
|
||||||
|
|
||||||
ClaimsIdentity identity = new ClaimsIdentity();
|
ClaimsIdentity identity = new ClaimsIdentity();
|
||||||
|
|
||||||
|
// get HttpClient lazily from IServiceProvider as you cannot use standard dependency injection due to the AuthenticationStateProvider being initialized prior to NavigationManager(https://github.com/aspnet/AspNetCore/issues/11867 )
|
||||||
|
var http = _serviceProvider.GetRequiredService<HttpClient>();
|
||||||
|
string apiurl = "/api/User/authenticate";
|
||||||
|
User user = await http.GetFromJsonAsync<User>(apiurl);
|
||||||
if (user.IsAuthenticated)
|
if (user.IsAuthenticated)
|
||||||
{
|
{
|
||||||
identity = new ClaimsIdentity("Identity.Application");
|
identity = new ClaimsIdentity("Identity.Application");
|
||||||
|
@ -44,6 +44,7 @@ namespace Oqtane.Providers
|
||||||
identity.AddClaim(new Claim(ClaimTypes.Role, role));
|
identity.AddClaim(new Claim(ClaimTypes.Role, role));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new AuthenticationState(new ClaimsPrincipal(identity));
|
return new AuthenticationState(new ClaimsPrincipal(identity));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -444,7 +444,7 @@ namespace Oqtane.Controllers
|
||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
|
|
||||||
// GET api/<controller>/current
|
// GET api/<controller>/authenticate
|
||||||
[HttpGet("authenticate")]
|
[HttpGet("authenticate")]
|
||||||
public User Authenticate()
|
public User Authenticate()
|
||||||
{
|
{
|
||||||
|
|
|
@ -22,7 +22,14 @@
|
||||||
<body>
|
<body>
|
||||||
@(Html.AntiForgeryToken())
|
@(Html.AntiForgeryToken())
|
||||||
<app>
|
<app>
|
||||||
|
@if (Configuration.GetSection("Runtime").Value == "WebAssembly")
|
||||||
|
{
|
||||||
|
<component type="typeof(Oqtane.App)" render-mode="Server" />
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
<component type="typeof(Oqtane.App)" render-mode="ServerPrerendered" />
|
<component type="typeof(Oqtane.App)" render-mode="ServerPrerendered" />
|
||||||
|
}
|
||||||
</app>
|
</app>
|
||||||
|
|
||||||
<div id="blazor-error-ui">
|
<div id="blazor-error-ui">
|
||||||
|
|
Loading…
Reference in New Issue
Block a user