我正在开发一个应用程序,它将在多个数据库中使用相同的数据库模式.出于这个原因,我创建了一个名为的数据库MyTemplate
.创建新用户时,他们将拥有自己的数据库实例.因此,MyTemplate_[UserName]
将创建一个名为like的数据库.当用户登录时,我需要将他们的查询指向他们的数据库.出于这个原因,我知道我需要在运行时设置连接字符串.我的问题是,我也想使用实体框架.
目前,我使用MyTemplate作为源创建了一个新的.edmx.我以为我能够更新代码并在那里设置连接字符串.不幸的是,我无法弄清楚如何设置它.TemplateEntities的构造函数没有允许我传入连接字符串的重载.我注意到TemplateEntities派生自DbContext,我不认为这会是问题所在.
string connectionString = GetUsersConnectionString();
using (TemplateEntities entities = new TemplateEntities())
{
TemplateEntity entity = new TemplateEntity();
// Save to the database
entities.TemplateEntity.Add(entity);
entities.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
我创建.edmx
错了吗?或者我完全错过了什么?我谷歌的所有内容都显示了一个重载,应该允许传入连接字符串.但是,我没有可用的超载.
我有一个MVC Web应用程序,一个WPF客户端和Web API服务器.我非常想将API控制器拉入MVC应用程序,并且只有一个app/api.我的主要原因是为应用程序用户和API客户端提供一个登录过程.
我本来希望做的是将一个SignInManager<ApplicationUser
注入Token
控制器并使用
var result = await _signInManager.PasswordSignInAsync(login.Username, login.Password, false, false);
Run Code Online (Sandbox Code Playgroud)
使用与构建到MVC项目中相同的密码hasher来验证用户名和密码.我不想复制任何类型的功能.我也希望通过这种方式实现一个登录,为WPF应用程序提供JWT令牌,以访问API方面的内容,以及标准的登录cookie,以便正常的MVC应用程序请求获得授权.
我应该如何以最少的代码重复来解决这个问题?
IDEA:
使用一个MVC应用程序作为REST服务器.如果我Login
获得JWT的操作也签署了我,例如_signInManager.PasswordSignInAsync
,我也应该获得允许我在内部访问受保护动作的cookie,并在外部使用包含JWT的授权头.
我正在尝试将IdentityModels.cs移动到另一个项目,以使网站与数据访问层保持分离.
我遵循了这个教程:http://blog.rebuildall.net/2013/10/22/Moving_ASP_NET_Identity_model_into_another_assembly
并且还在这里检查了这个问题:如何将MVC 5 IdentityModels.cs移动到单独的程序集中
但我仍然感到困惑,因为IdentityModels引用另一个名为ApplicationUserManager的类,如下所示:
public class ApplicationUser : IdentityUser
{
public ClaimsIdentity GenerateUserIdentity(ApplicationUserManager manager)
{
//code removed for simplicity
}
}
Run Code Online (Sandbox Code Playgroud)
当我去搜索那个类的哪个地方时,我发现它位于一个类中的网站项目中:App_Start/IdentityConfig.cs
//...More code in the upper section
public class SmsService : IIdentityMessageService
{
public Task SendAsync(IdentityMessage message)
{
// Plug in your SMS service here to send a text message.
return Task.FromResult(0);
}
}
// Configure the application user manager used in this application. UserManager is defined in ASP.NET …
Run Code Online (Sandbox Code Playgroud) 我开发了一个基于ASP.Net核心的新项目.我已将所有EF代码(模型,映射,DbContext)移动到专用DAL类库中,以遵循SOLID规则的单一责任原则.
但是,我现在需要在我的项目中添加身份验证,并且需要将以下内容添加到我的Web项目的Startup.cs中,如不同的教程所示:
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
Run Code Online (Sandbox Code Playgroud)
它将涉及添加Microsoft.AspNetCore.Identity.EntityFrameworkCore包,在我看来,我开始通过将此包包含到我的Web项目中来打破SRP规则.
是否可以将所有身份代码(服务,模型)作为外部类库移动,就像我为DAL所做的那样.