Bas*_*sin 5 c# asp.net-core blazor-webassembly
我们现有的 ASP.NET Core 应用程序(.NET 5)使用 Angular 作为 UI 框架。
我们创建了一个 Blazor WASM 客户端库,希望与现有的 Angular 框架一起在此应用程序中使用。
以下文档是我们如何配置它的Startup.Configure方法,以便从 wwwroot 中的专用目录“blazor-app”“提供”balzor 应用程序。
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// ...
app.UseBlazorFrameworkFiles("/blazor-app");
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapFallbackToFile("blazor-app/index.html");
});
}
Run Code Online (Sandbox Code Playgroud)
我们如何配置 Blazor 应用程序,以便仅针对经过身份验证的用户返回 index.html?
例如这样的事情?
[Authorize]
public class ClientController
{
public IActionResult ClientApp()
{
// returns Blazor app index.html
}
}
Run Code Online (Sandbox Code Playgroud)
在提供视图之前有几种方法可以进行身份验证。我决定通过ASP.Net Session管理来做到这一点。
将会话服务添加到您的应用程序:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddDistributedMemoryCache();
services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromSeconds(3600); // an hour
options.Cookie.HttpOnly = true;
options.Cookie.IsEssential = true;
});
}
Run Code Online (Sandbox Code Playgroud)
然后在您的应用程序中使用会话:
app.UseRouting();
// Call UseSession after UseRouting and before MapRazorPages and MapDefaultControllerRoute
app.UseSession();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
Run Code Online (Sandbox Code Playgroud)
现在,在提供视图之前检查用户是否经过身份验证:
public IActionResult Index()
{
string KEY = "Authentication-Key";
if (string.IsNullOrEmpty(HttpContext.Session.GetString(KEY))||
!IsValid(HttpContext.Session.GetString(KEY))){
// Redirect to {Action = Index} of {Controller = Login}
return RedirectToAction("Index", "Login");
}
return View(); // consider that this is the blazor view
}
private bool IsValid(string KEY)
{
// Implement your validation mechanism
return KEY == "THIS IS THE AUTH KEY";
}
Run Code Online (Sandbox Code Playgroud)
假设用户在检测到未经过身份验证并再次经过身份验证并收到用于身份验证的密钥后被重定向到登录页面:
string KEY = "Authentication-Key";
HttpContext.Session.SetString(KEY, "THIS IS THE AUTH KEY");
Run Code Online (Sandbox Code Playgroud)
最后,当她/他手动或自动返回索引页面(例如:blazor视图)时,将提供视图。
| 归档时间: |
|
| 查看次数: |
5045 次 |
| 最近记录: |