我看到一个几年前就已经被问过的问题,它解释了与使用 AspNet Identity 时丢失自定义声明相关的问题。不幸的是,那里提到的解决方案对我不起作用,因为我在 .NET 6 Blazor Server 应用程序上使用 AspNet Core Identity。
问题是类似的(在下面几点解释):
我在登录期间添加了一些声明(这些声明来自某些 API 调用,而不是来自 Identity 数据库,因此我在登录期间添加它们)。
我可以从 Blazor 组件访问它们。
它在 30% 的情况下工作正常,但在 70% 的情况下,cookie 会丢失我在登录期间添加的自定义声明,并且我的应用程序会遇到问题。我什至无法弄清楚这些声明何时会丢失,因为在这两种情况下都没有发生这种情况,RevalidationInterval因为我用 1 分钟的时间跨度对其进行了测试,并且当我多次测试它时,它至少在 5 分钟内运行良好。搜索了一堆答案,但没有找到 AspNet Core Identity 的正确答案。
这就是我的代码的样子:
builder.Services
.AddDefaultIdentity<IdentityUser>(options =>
{
options.SignIn.RequireConfirmedAccount = false;
// Set Password options here if you'd like:
options.Password.RequiredLength = 6;
})
.AddRoles<IdentityRole>()
.AddUserManager<ADUserManager<IdentityUser>>()
.AddEntityFrameworkStores<ApplicationDbContext>();
builder.Services.AddScoped<AuthenticationStateProvider, RevalidatingIdentityAuthenticationStateProvider<ApplicationUser>>();
Run Code Online (Sandbox Code Playgroud)
public async Task<IActionResult> OnPostAsync(string returnUrl = null)
{
returnUrl ??= Url.Content("~/"); …Run Code Online (Sandbox Code Playgroud) c# asp.net-identity asp.net-core blazor-server-side .net-6.0
我有一个令人兴奋的 NavMenu 组件
<MudPaper Class="py-3" Elevation="0">
<MudNavMenu>
<MudNavLink Href="/" Match="NavLinkMatch.All">Home</MudNavLink>
<MudNavLink Href="/posts" Match="NavLinkMatch.All">Articles</MudNavLink>
<MudNavLink Href="/about" Match="NavLinkMatch.All">About</MudNavLink>
</MudNavMenu>
</MudPaper>
<MudSwitch @ref="@darkModeSwitch" *@ ... @* />
Run Code Online (Sandbox Code Playgroud)
那是在 a 里面MudDrawer。我真正想要的是将所有 NavLink 放在顶部,将开关放在底部,但我尝试过的所有操作似乎都没有效果。看起来该MudDrawer组件是在列表中一个接一个的事物上设置的。我缺少什么?或者有什么快速解决办法吗?
大多数情况下,我尝试在开关周围放置一个容器并为其提供顶部边距,并使用对齐和调整弹性类。
在 .net 7 中的 Blazor 服务器中,我可以在 Page.blazor 中执行此操作:
@信息
<button class="btn btn-primary mt-2 btn-block" @onclick="SendMessage">发送消息
@code { 公共字符串消息 { 获取;放; }
private async Task SendMessage()
{
message = "Hello";
}
Run Code Online (Sandbox Code Playgroud)
}
当您单击该按钮时,它会在页面上输出“Hello”。
但是,在 .net 8 中,在服务器端 Page.blazor 中的“Blazor Web 应用程序”(自动、服务器与 Web Assembly 混合)中,此按钮不起作用。
EditForm 中的按钮确实可以工作,但我不想使用它,我只想单击按钮来触发事件。
为什么这在 .net 8 中不起作用?我该如何做到这一点?
谢谢
我正在从 Blazor WebAssembly 项目迁移到 .net 8“Blazor Web App”项目,该项目支持客户端和服务器渲染内容。
我对 IoC 的工作方式有点困惑。这是文档没有提到的事情,但在全新的“Blazor Web App”项目上清楚地再现了这一点:对于定义为的页面@rendermode InteractiveWebAssembly(例如Counter.razor带有注入的服务,如@inject ITestIoc testIoc),我必须ITestIoc在两个位置定义服务:Program.cs客户端项目和Program.cs服务器项目,即使它只在 wasm 内部使用。ITestIoc如果我错过了一处,它会抛出服务未定义的异常。
可能发生的情况是,它InteractiveWebAssembly首先在服务器端渲染页面,然后通过 wasm 进行所有进一步的交互。因此,“Blazor Web App”中的 WebAssembly 似乎与常规 WebAssembly 项目中的处理方式有所不同。我知道还有另一种类型的 WebAssembly 类型的项目,仅支持 wasm,但我也希望可以使用服务器端。所以我想知道是否有任何办法可以解决这个问题,如果我想要某些页面仅进行 wasm 渲染,而根本不需要服务器渲染?
我尝试自己构建此应用程序,但是在此过程中遇到了几个绊脚石。我认为最好退后一步,更广泛地了解我尝试创建的内容。似乎没有任何关于如何制作所需内容的文档。(除非有人可以指出我可能错过的正确位置)
最终,我想要的是让Blazor(服务器端)应用程序进行API调用以使用应用程序中的数据,然后让IdentityServer4封装身份验证。我需要具有Azure以及ASP.net Identity作为可能的身份验证方法。
我已经尝试过并且能够创建一个也具有本地API的IdentityServer4。我可以致电Postman来获取令牌等。但是,在将Blazor(服务器端)应用程序与IdentityServer4绑定时,我很困惑。
我试图具体地问这个问题,但是根本没有得到任何结果。我希望从更大的角度来看可能会有所帮助。
看来odic-client.js是从IdentityServer4回调中获取数据的方法,但是,这似乎与Blazor(服务器端)中的.NET授权没有很好的结合。我如何使它们一起工作。
aspnetboilerplate 支持 Blazor 服务器端和/或 Blazor 客户端的任何计划
我去年问过这个问题,因为服务器端 Blazor 将于 9 月投入生产。样板人支持 Blazor 真的很好。我也是 Aurelia 的粉丝,但似乎他们不想做 Aurelia,因为它不常用,但它比 Angular/React 等要好得多。
有谁知道在任何事件(按钮单击等)中是否有任何替代 Javascript window.location.href()来替换 Blazor 服务器端用户地址栏中的 URL 的方法?或者我只需要使用 Blazor JavaScript 互操作并直接编写 JS?
我是 .NET Core 和 Blazor 的新手,主要有 WebForms 和 MVC 经验。
我发现的所有 Blazor 文档和教程都使用单独的 API 项目并通过 HttpClient 和 Json 序列化/反序列化访问数据。我明白为什么这对于使用 WebAssembly 的客户端 Blazor 来说是必要的,但是对于使用 SignalR 的服务器端Blazor,使用实体框架 DbContext 从组件的 .razor 文件直接访问数据库的最佳方法是什么?
例如,在 MVC 控制器中,您可以执行以下操作:
private ApplicationDbContext context = new ApplicationDbContext();
Run Code Online (Sandbox Code Playgroud)
然后通过执行以下操作来查询数据:
var things = context.Things.Where(t => t.ThingAttributes == something);
Run Code Online (Sandbox Code Playgroud)
在使用服务器端 Blazor 中的组件时,是否有一种干净且高效的方法?
很抱歉这个问题的广泛性质,请随时向我指出我应该已经阅读的博客、文档或教程。谢谢!
实现 openidconnect 后,blazor 在哪里存储访问令牌?如何找回它?
如何通过 IdentityServer4 将 OpenIdConnect 添加到 ASP.NET Core ServerSide Blazor Web 应用程序?
是的,我知道它已准备好用于生产,但我很害怕如果我用于生产,我可能会遇到一些代理问题或其他问题。我的飞机是启动一个blazor服务器端项目并在IIS中部署,我需要在IIS中进行任何设置更改吗?你们有没有人在生产中使用过blazor服务器端,您在部署时遇到过什么问题吗?
blazor ×7
asp.net-core ×3
c# ×3
.net-6.0 ×1
.net-8.0 ×1
asp.net ×1
blazor-auto ×1
iis ×1
mudblazor ×1