我对在 React SPA 中使用 ASP.NET Core Identity 感到困惑和迷茫。
我已经多次阅读有关 ASP.NET Core Identity 的 Microsoft 文档,主要集中在Identity with SPA 部分,但我必须承认我仍然不清楚如何将 React SPA 与 ASP.NET Core Identity 绑定。
这些是我偶然发现的拦截器:
该文档假设我想使用IdentityServer,但我没有。我更喜欢Openiddict,但我不知道如何切换。最糟糕的是,我对 IdentityServer 或 Openiddict 的作用并不完全清楚。我知道他们为 JWT 令牌提供 OpenId 连接并保护我的 REST 端点,但他们如何做到这一点对我来说仍然不清楚。
专注于 React SPA 的 Microsoft 文档都使用“方便的”托管 React SPA 和 API 后端作为一个单元。这很不幸,因为我不想要那样。我的 React SPA 与 API 完全解耦并分离,它们将单独托管。总而言之,我不希望我的 React SPA 与 API 后端在同一个解决方案中。
Microsoft 文档中的大多数示例使用实体框架作为 ORM。我不会。我将改用 Dapper。好消息是,有一节更好地解释了 ASP.NET Core Identity 的自定义存储提供程序,而且我正在研究 ASP.NET Core …
reactjs identityserver3 asp.net-core openiddict asp.net-core-identity
我已经在 Visual Studio 2019 中安装了 JetBrains 的 DotCover 和 ReSharper。
不幸的是,DotCover 代码覆盖率似乎不起作用。我有这个示例类:使用系统;
namespace ClassLibrary1
{
public class Class1
{
public int X { get; set; }
public int Y { get; set; }
public int Division()
{
return X / Y;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这个示例单元测试:
using ClassLibrary1;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace UnitTestProject1
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
var c = new Class1 {X = 10, Y = 2};
var d = c.Division();
Assert.AreEqual(d, 5);
} …Run Code Online (Sandbox Code Playgroud) Microsoft 标识平台和ASP.NET Core 标识之间有什么区别?
后者的文档中提到了前者,但我不清楚两者之间的区别。
c# asp.net asp.net-core-identity microsoft-identity-platform
在 React SPA 中,我在 /src/pages/ 文件夹下有一组“页面”。
入口点页面是/src/文件夹下的一个index.js文件,我在这里定义了一个路由器const是这样的:
const routing = (
<Router>
<div>
<Switch>
<Route path="/signIn" component={SignIn} />
<Route exact path="/" component={Homepage} />
<Route path="/page1" component={Page1} />
<Route path="/page2" component={Page2} />
<Route path="/page3" component={Page3} />
<Route component={NotFound} />
</Switch>
</div>
</Router>
Run Code Online (Sandbox Code Playgroud)
它工作得很好。所有页面都可以像“ https://mysuperapp.com/page2 ”一样导航,它将呈现 Page2 React 组件。
当我合并用户会话管理(登录、注销)时会出现问题。如果用户未登录应用程序,则所有页面都应自动重定向到 /signIn页面。反之亦然,如果用户已经登录,如果访问/signIn页面,它应该自动重定向到根主页。
现在,我已经通过添加以下代码来实现这一切的页面,右边的渲染()方法在组件声明后,像这样的:
class Page2 extends React.Component {
render() {
if (UserProfile.getUserSessionStatus() !== "logged") {
this.props.history.push("/signIn");
} …Run Code Online (Sandbox Code Playgroud) c# ×2
reactjs ×2
asp.net ×1
asp.net-core ×1
dotcover ×1
javascript ×1
microsoft-identity-platform ×1
openiddict ×1
react-router ×1
resharper ×1
unit-testing ×1