我正在开发一个实现 DDD 原则并使用 Asp.net web api 和实体框架的 web 应用程序。
我知道我的问题很奇怪,但无论如何我正在寻求有经验的人的指导。
过去我在做dtos、领域模型和数据模型之间的映射,但最近我发现每次都很难做到这一点。
依赖内置自动映射器来处理我们应用程序的映射是否是一种可靠的方法,以及哪些可用的内置自动映射器可以将它们与 Web 应用程序一起用作 c# 和实体框架?
我正在开发一个实现 DDD 概念的 Web 应用程序,我知道 DDD 中的域服务是:
域服务:封装不自然适合域对象的业务逻辑,并且不是典型的 CRUD 操作 - 那些将属于存储库。
但是我很困惑域服务是域模型中的类、接口还是方法,以及我的聚合根/域实体将如何调用该服务?
另外是否需要将聚合根或域实体返回为域服务?
如果我的聚合根需要检查电子邮件是否存在,或检查密码哈希匹配(需要调用服务/存储库来访问数据库)。我是否需要在域服务或应用程序服务中实现该代码?
non-clustered index在中varchar(max)不允许在中使用创建列sql server。
那么,varchar可以non-clustered index创建的最大长度是多少?
我是.net核心的新手,我正在尝试创建Web api核心,该核心实现jwt以进行身份验证和授权。
在Startup类中,我以这种方式配置它:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<MandarinDBContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("MyConnection")));
services.AddIdentity<User, Role>()
.AddEntityFrameworkStores<MyDBContext>()
.AddDefaultTokenProviders();
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = false,
ValidateAudience = false,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = "yourdomain.com",
ValidAudience = "yourdomain.com",
IssuerSigningKey = new …Run Code Online (Sandbox Code Playgroud) 我已经阅读了这里关于状态和现时参数之间的区别以及据我了解状态参数由身份验证服务器(身份服务器)生成并由客户端用于防止 CSRF 攻击,而现时参数由客户端生成然后身份验证服务器将其包含在令牌中,客户端将使用它来检查令牌有效性。
我的第一个问题是:在使用隐式授权类型时,在 identityServer4 的情况下,上述流程是否正确?
我的第二个问题:nonce参数存储在用户代理(浏览器)的何处,客户端如何生成和传输它?
我的第三个问题:客户端如何交叉检查状态参数是否有效?
我在 .Net Core 2.0 中使用 IdentityServer4 并且我成功生成了访问令牌和刷新令牌。我只需要能够在生成时在服务器端“看到”刷新令牌,以便我可以将其保存在数据库中以用于某些特定目的。
在服务器上生成刷新令牌时,如何访问它的值?
我具有.net核心Web API,当我在不同的程序集中隔离Startup.cs时,所有API都返回404,如果我将Startup.cs返回到存在控制器的同一个程序集中,它们将再次起作用。
这是我的Web API的Program.cs:
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.ConfigureAppConfiguration((hostContext, configApp) =>
{
configApp.SetBasePath(Directory.GetCurrentDirectory());
configApp.AddJsonFile("appsettings.json", false, true);
configApp.AddJsonFile($"appsettings.{hostContext.HostingEnvironment.EnvironmentName}.json", false, true);
});
}
Run Code Online (Sandbox Code Playgroud)
还有我的Startup.cs:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
.AddDataAnnotationsLocalization(options =>
{
options.DataAnnotationLocalizerProvider = (type, factory) =>
factory.Create(typeof(ValidationMessages));
});
} …Run Code Online (Sandbox Code Playgroud) c# ×5
asp.net-core ×2
.net-core ×1
automapper ×1
entity ×1
jwt ×1
maxlength ×1
oauth-2.0 ×1
service ×1
sql-server ×1