相关疑难解决方法(0)

动态连接字符串的设置实体框架

我正在开发一个应用程序,它将在多个数据库中使用相同的数据库模式.出于这个原因,我创建了一个名为的数据库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错了吗?或者我完全错过了什么?我谷歌的所有内容都显示了一个重载,应该允许传入连接字符串.但是,我没有可用的超载.

c# entity-framework

23
推荐指数
2
解决办法
3万
查看次数

一个MVC Web应用程序作为API和客户端

我有一个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的授权头.

c# security asp.net-identity asp.net-core-mvc asp.net-core

9
推荐指数
1
解决办法
605
查看次数

ASP.NET Web窗体和标识:将IdentityModels.cs移动到另一个项目

我正在尝试将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)

.net c# asp.net webforms asp.net-identity

8
推荐指数
1
解决办法
3898
查看次数

将标识移动到类库ASP.Net Core

我开发了一个基于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所做的那样.

entity-framework-core asp.net-core asp.net-core-identity

6
推荐指数
1
解决办法
3325
查看次数