相关疑难解决方法(0)

使用Asp.Net Identity DataBase的第一种方法

我需要将Asp.Net最新的MVC版本与现有数据库集成,该数据库还有一个String Address列表dbo.AspNetUsers

我需要创建一个ApplicationUser具有属性Address 的实例.

知道怎么做吗?

c# asp.net-mvc identity entity-framework

56
推荐指数
3
解决办法
9万
查看次数

如何将ASP.NET MVC5身份验证添加到现有数据库

我正在学习MVC5身份认证,并在www.asp.net上阅读材料.我在这里有几个问题.

  1. 如果我想使用身份验证,是否有理由不使用MVC模板?或者是否有理由使用空模板?MVC模板还提供引导程序.

  2. 我创建了一个数据库,我想先进行数据库开发.如果我使用MVC模板,将在项目文件夹下创建凭据数据库.如何合并两个数据库,或者我应该只使用两个数据库?

如果我的问题很愚蠢,请忽略我或告诉我先读什么.我知道社区中的人很好但很关键.谢谢

asp.net asp.net-mvc-5 asp.net-identity

34
推荐指数
1
解决办法
4万
查看次数

将MVC 5标识添加到现有项目

我是一名新手程序员,在学习我的第一个代码项目时学习.我从MVC 4开始,并设法让CRUD为单个实体工作.我决定接下来尝试解决安全问题.当Visual Studio搭建我的MVC 4项目时,它添加了一个帐户模型,视图和控制器.我已经使用此处描述的过程将我的项目升级到MVC 5和EF 6 .我现在想用MVC 5 scaffolded Identity模型,视图,控制器替换MVC 4安全代码.这可能吗?如果是这样,怎么样?

c# asp.net-mvc-5 asp.net-identity

11
推荐指数
1
解决办法
6304
查看次数

重命名dbo.AspNetUsers表

我正在尝试重命名ASP.net Identity 2.0生成的默认表名.我在stackoverflow上阅读了所有文章,问题和答案,但我仍然得到相同的错误.

我将表重命名为Roles,UserClaims,Logins,UserRoles和Users.我还将应用程序dbcontext更改为以下内容

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("DefaultConnection", throwIfV1Schema: false)
    {
    }

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }

    protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder) {
        base.OnModelCreating(modelBuilder);


        modelBuilder.Entity<IdentityUser>().ToTable("Users", "dbo");
        modelBuilder.Entity<IdentityRole>().ToTable("Roles", "dbo");
        modelBuilder.Entity<IdentityUserRole>().ToTable("UserRoles", "dbo");
        modelBuilder.Entity<IdentityUserClaim>().ToTable("UserClaims", "dbo");
        modelBuilder.Entity<IdentityUserLogin>().ToTable("UserLogins", "dbo");

    }

}
Run Code Online (Sandbox Code Playgroud)

但我一直得到Invalid object name 'dbo.AspNetUsers'.错误,我不知道为什么它仍然试图首先找到AspNetUsers而不仅仅是用户,虽然我做了上述更改.完全绝望了.

在此输入图像描述

数据库以及具有新表名的相同列:

在此输入图像描述

和SQL数据库项目:

在此输入图像描述

asp.net entity-framework asp.net-identity

11
推荐指数
1
解决办法
1万
查看次数

如何为Identity Framework设置实体框架模型以对抗现有数据库?

我正在将我的旧网站从PHP迁移到C#MVC.我想使用微软的Identity设置,因为它看起来很整洁.

我已经使用数据库优先实体框架设置了我的解决方案.我有所需的表(Users,UserRoles,UserLogins,UserClaims)和所有外键设置.

我已经看了几种方法来设置IdentityUser已经使用过MySqlDatabase和代码优先的方法,但是当我已经有一个已建立的数据库(包括现有的Users表)时,我不确定如何实现我的IdentityUser .

我希望我使用我已经创建的Entity Framework类IdentityUser来操纵我Users.有没有办法让我的User模型在EF中派生IdentityUser并匹配我现有的数据库?

我正在努力的一件事是我的数据库不使用string值作为主键,它使用自动递增int.

目前我有以下课程:

// Copyright (c) KriaSoft, LLC.  All rights reserved.  See LICENSE.txt in the project root for license information.

namespace KriaSoft.AspNet.Identity.EntityFramework
{
    using Microsoft.AspNet.Identity;
    using System;

    public partial class IdentityUser : IUser<int>
    {
        /// <summary>
        /// Default constructor 
        /// </summary>
        public IdentityUser()
        {
            Id = Guid.NewGuid().ToString();
        }

        /// <summary>
        /// Constructor that takes user …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework asp.net-identity

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

对Identity和其他数据库实体使用相同的dbContext

我有一个使用EntityFramework edmx模型的应用程序,我希望能够为我的Identity类和实体类使用相同的dbContext.有人提出了类似查询,但我无法让它们兼容.

我已经改变了EF上下文类中的类定义,如下所示

    public partial class MyDbContext : IdentityDbContext<AspNetUser>
    {
    }
Run Code Online (Sandbox Code Playgroud)

和我的身份用户一样

public partial class AspNetUser : IdentityUser
{
}
Run Code Online (Sandbox Code Playgroud)

但我尝试登录或注册时收到错误

实体类型AspNetUser不是当前上下文的模型的一部分

c# entity-framework visual-studio-2013 asp.net-mvc-5 asp.net-identity

7
推荐指数
1
解决办法
4960
查看次数

与MVC5中现有用户数据库的复杂身份验证

我正在将SaaS应用程序从Classic ASP迁移到.NET MVC5,并将使用EF6 Database First.最终用户的登录表单可由每个租户自定义(在他们自己的子域上,但指向同一个Web应用程序).我们希望使用现有的数据库架构和新的身份验证和授权过滤器.

例如,一个租户上的用户可以通过输入他们的名字,姓氏和我们系统生成的代码来登录.另一个租户的用户可以通过输入他们的电子邮件地址和密码来登录.此外,每个租户都有一个单独的管理员登录名,该登录名使用用户名和密码.另一个租户可以对远程AD服务器使用LDAP身份验证.

有自定义身份验证的最佳实践方法吗?

几乎每篇文章都提出了不同的实现方法:简单地设置FormsAuthentication.SetAuthCookie,使用自定义OWIN提供程序,覆盖AuthorizeAttribute等.

在Classic ASP中,我们查询数据库以找出该租户的登录类型,在登录屏幕上显示相应的字段然后在回发后,检查字段是否与数据库中的内容匹配,然后适当地设置会话变量检查每个页面请求.

谢谢

asp.net authentication wif asp.net-mvc-5 asp.net-identity

7
推荐指数
1
解决办法
7462
查看次数

ASP.NET Identity Model First因重命名的AspNetUserRoles列而失败

像其他几个一样,我试图实现ASP.NET Identity Model First.一旦你尝试,错误,气氛,搜索和解决,一切都很好.我想.

也可以看看:

行动方案,总结如下:

  • 创建默认项目(MVC5)
  • 创建数据库
  • 更新web.config中的connectionstring
  • 运行网站,注册:表格已创建
  • 创建EF模型(edmx)
  • 导入身份表(到目前为止一切都很好)
  • 修改了xxx.Context.tt以继承IdentityDbContext
  • 生成数据库脚本(麻烦从这里开始)

我已经解决了出现的问题(直到最新一步).为了完整起见,我将描述它们.

使用默认的标识上下文

一切正常:表格创建,我可以注册和登录.然而,这不是我想要的情况:我想使用Model First方法.

使用EF连接字符串使用自定义的第一个上下文模型

修改CreatePerOwinContext,使其使用我的Model First上下文:

public void ConfigureAuth(IAppBuilder app)
{
    app.CreatePerOwinContext(CustomModelFirstDbContext.Create);
Run Code Online (Sandbox Code Playgroud)

和ApplicationUserManager一起使用Model First上下文:

public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context) 
{
    var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(context.Get<CustomModelFirstDbContext>()));
Run Code Online (Sandbox Code Playgroud)

结果是:

'/'应用程序中的服务器错误.

实体类型ApplicationUser不是当前上下文的模型的一部分.

描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

异常详细信息:System.InvalidOperationException:实体类型ApplicationUser不是当前上下文的模型的一部分.

来源错误:

在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.

堆栈跟踪:[InvalidOperationException:实体类型ApplicationUser不是当前上下文的模型的一部分.]

将"普通"连接字符串与自定义的Model First上下文一起使用

WebApplication1.dll中出现"System.Data.Entity.Infrastructure.UnintentionalCodeFirstException"类型的异常,但未在用户代码中处理

附加信息:如果在Code First模式下使用,则使用T4模板为Database First和Model First开发生成的代码可能无法正常工作.要继续使用Database First或Model First,请确保在执行应用程序的配置文件中指定了Entity Framework连接字符串.要使用从Database First或Model First生成的这些类,使用Code First添加任何其他配置,使用属性或DbModelBuilder API,然后删除引发此异常的代码.

所以,我认为我需要默认的Identity上下文来使用Identity,并使用自定义的Model First上下文来处理其他所有内容.不是首选的解决方案,但可以接受.

  • 滚回一切
  • 从数据库导入标识表
  • (可选)通过Model First方法创建实体
  • 生成的数据库脚本

正常项目和快速健全性检查测试项目都与AspNetUserRoles表具有相同的问题.这是一个联结表,当在EF设计器中导入它时,一切正常.你不会看到它,因为它是一个多对多的关系,当检查AspNetRole和AspNetUser之间的关联时它看起来不错.

设计师和制图细节:

模型第一映射OK

但是,在生成sql脚本时,EF会修改密钥. …

entity-framework ef-model-first asp.net-mvc-5 asp.net-identity asp.net-identity-2

5
推荐指数
1
解决办法
3398
查看次数

自定义OWIN/Katana UserManager工厂行为

有很多样本在线使用OWIN/Katana根据用户名/密码组合在数据库中查找用户并生成索赔主体,例如...

var userManager = context.OwinContext.GetUserManager<ApplicationUserManager>();
ApplicationUser user = await userManager.FindAsync(context.UserName, context.Password);
// generate claims here...
Run Code Online (Sandbox Code Playgroud)

如果您正在创建一个新的应用程序并希望实体框架执行脏工作,那就没问题.但是,我有一个八年历史的单片网站刚刚更新,使用基于声明的身份验证.我们的数据库命中是通过DAL/SQL手动完成的,然后从那里生成ClaimsIdentity.

有些人建议OWIN比我们的手动方法更容易使用,但我想从那些使用它的人那里得到一些输入.

是否可以根据凭据更改UserManager工厂查找用户的方式?或者,我错过了另一种方法吗?我在网上找到的所有样本似乎都使用样板方法让Entity Framework创建数据库并管理搜索.

asp.net entity-framework owin katana asp.net-identity

5
推荐指数
1
解决办法
5095
查看次数

使用现有数据库名称验证实现OWIN?

我希望按照我在这里找到的例子来实现OWIN:http: //www.asp.net/web-api/overview/security/individual-accounts-in-web-api

但是,由于这种工作方式对我来说是新的,特别是使用我自己创建的数据库,我想要一些指导.我可以毫无问题地提交我的注册请求.

帖子带我到AccountController:

    [AllowAnonymous]
    [Route("Register")]
    public async Task<IHttpActionResult> Register(RegisterBindingModel model)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        try { 
            var email = model.Email;
            var password = model.Password;

            var user = new users() {
                 Email = email,
                 PasswordHash = password,
                 Password = password
            };

            IdentityResult result = await UserManager.CreateAsync(user, model.Password);

            if (!result.Succeeded)
            {
                return GetErrorResult(result);
            }

            return Ok();
        }
        catch(Exception ex)
        {
            throw;
        }
    }
Run Code Online (Sandbox Code Playgroud)

这会触发以下代码:

    public ApplicationUserManager UserManager
    {
        get
        {
            return _userManager ?? Request.GetOwinContext().GetUserManager<ApplicationUserManager>();
        }
        private …
Run Code Online (Sandbox Code Playgroud)

c# asp.net owin

5
推荐指数
1
解决办法
1020
查看次数

忽略 ASP .Net MVC 5 Identity 中的用户角色

我目前正在使用ASP .Net MVC 5 Identity framework我的简单MVC 5应用程序来管理用户身份验证。我的数据库包含 5 个与身份相关的表:

dbo.AspNetUsers
dbo.AspNetRoles
dbo.AspNetUserRoles
dbo.AspNetUserClaims
dbo.AspNetUserLogins
Run Code Online (Sandbox Code Playgroud)

基本上,我想要实现的是删除AspNetRoles, AspNetUserRoles(这只是一个关系表)和AspNetUserClaims。并只留下:

dbo.AspNetUsers 
dbo.AspNetUserLogins
Run Code Online (Sandbox Code Playgroud)

因为我目前正在研究基于OAuth2.0的用户登录系统。我不需要角色。我想知道有关用户的信息是他是否登录。我的应用程序中没有经理、管理员或其他用户角色。如何从我的应用程序中删除它们,并且仍然能够使用身份框架进行用户授权/身份验证和 OAuth?首先这可能吗?

c# asp.net-mvc asp.net-mvc-5 asp.net-identity

3
推荐指数
1
解决办法
1462
查看次数

实体框架不会在现有数据库上创建标识表

我当前的项目有两个数据库连接:

第一个用于IdentityModel并使用本地.mdf文件.第二个我在外部SQL Server上创建,并首先使用数据库导入.

现在我想在外部sql服务器上创建IdentityModel表,因此只使用一个连接/数据库.我更改了ApplicationDbContext以匹配web.config中的外部连接名称.

ApplicationDbContext

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("SAMPLEEntities", throwIfV1Schema: false)
    {
    }

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }
}
Run Code Online (Sandbox Code Playgroud)

Web.config文件

<add name="SAMPLEEntities" connectionString="metadata=res://*/Models.modelone.csdl|res://*/Models.modelone.ssdl|res://*/Models.modelone.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=thedatabase;initial catalog=SAMPLE;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
Run Code Online (Sandbox Code Playgroud)

现在我认为会生成表格,但事实并非如此.当我尝试在软件包管理器控制台中进行手动更新时,我收到以下错误:

不支持从使用Database First或Model First创建的DbContext创建DbModelBuilder或编写EDMX.EDMX只能从不使用现有DbCompiledModel创建的Code First DbContext中获取.

我还尝试将本地.mdf文件导入到sql server中,这样我就可以复制表了,但是mdf文件是由VS 2015创建的,不会在SQL Server 2012中加载.

有关如何在外部SQL Server中生成/添加表的任何建议?

sql-server asp.net asp.net-mvc entity-framework asp.net-identity

2
推荐指数
1
解决办法
4068
查看次数