没有实体框架的 ASP.NET 身份

2024-01-04

是否可以在不使用实体框架的情况下使用新的 ASP.NET Identity,而是使用您自己的方法?

我有一个 MVC 项目,它使用普通的 ADO.NET 进行数据访问。我想实现 ASP.NET 身份,但我想继续使用 ADO.NET 和存储过程。这就是我选择走的路。


我正在使用 Asp.Net Identity 2.2.1。 我实现这一点的方法是创建我自己的用户:

public class MyUser : IUser {...}

然后创建我自己的UserStore: (实现您实现的接口所需的所有方法,并在这些方法上使用您的数据访问来提取/插入数据。例如,我创建了另一个我使用的 dal 类dapper https://github.com/StackExchange/dapper-dot-net为了访问数据库,我在我的用户存储中提供了一种方法的示例,但对于您实现的所有其他方法来说,这是相同的想法)

public class MyUserStore : IUserStore<MyUser>, IUserPasswordStore<MyUser>, IUserLockoutStore<MyUser, string>, IUserEmailStore<MyUser>
{
    public Task<MyUser> FindByNameAsync(string userName)
    { 
        MyUser muser = dal.FindByUsername(userName);

        if (muser != null)
            return Task.FromResult<User>(muser);

        return Task.FromResult<MyUser>(null);
    }
    //... all other methods
}

然后我的 dal.cs 上的方法看起来像这样:

public MyUser FindByUsername(string username)
{
    //pull user from the database however you want to based on the username, 
    //in my case here is where I used Dapper to query the db and return the User object with the data on it, but you can do it however you want.

    return myUser; //object with data on it
}

然后在我的 UserManager 上我设置用户存储如下:

public UserManager() : base(new MyUserStore())
{
    //anything else you need on the constructor
}

NOTE: 并非 MyUserStore 上的所有方法都需要访问数据库,因为其中很多方法都调用 FindUser... 方法或 UpdateUser 方法。例如:

public Task<int> IncrementAccessFailedCountAsync(MyUser user)
{
    //here I just updated the user object as I know that UpdateAsync() method will be called later.
    return Task.FromResult<int>(++user.FailedAttempts); 
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

没有实体框架的 ASP.NET 身份 的相关文章

随机推荐

  • 协变对象初始值设定项?

    假设我有一个类 它的属性是字典 使用对象初始值设定项我可以使用以下语法 我认为看起来很干净 new MyClass Table test true test false 但是 在初始化程序之外我不能这样做 this Table test t
  • 点击颤动时停止 GIF 动画

    我是颤振的新手 我尝试在单击时暂停 GIF 图像的动画 并在第二次单击时恢复动画 但我不知道如何在 flutter 中实现它 我为此使用资产图像 Image asset images xyz gif 但问题是图像不断动画 因此 任何人都知道
  • 带 ID 的脚本标签?

    大多数现代浏览器是否支持脚本标签中的 id 例如 我问的原因是 Eclipse 显示一条警告 指出 未定义的属性名称 但当我使用 jQuery 选择器获取脚本元素的其他属性时 它在 Google Chrome 中工作正常 W3Schools
  • 对于具有compileOnly依赖项的单元测试,如何避免在运行时重新声明可用性的依赖项?

    我目前正在使用 Gradle 构建一个项目 它依赖于 我在编译时需要的第三方组件 但将在运行时提供 在 Maven 中我会将这种依赖声明为provided 在 Gradle 中我将其声明如下 compileOnly group org ap
  • 在迭代到循环的下一次迭代之前完成 FOR 循环内的所有函数

    假设我有一个类似的功能 var bigArray 1 2 3 4 5 n for var i 0 i
  • MKMapView MKPointAnnotation 点击​​事件

    我有一个注释列表 MKPointAnnotation 我有一个用于整个视图的 UIViewController MKMapView 实现控制器 我认为它对于检测用户与地图的交互很有用 我自己的 MKPointAnnotation 实现 子类
  • 具有不同列名的 pandas 数据帧上的 pd.corrwith

    我想以有效的方式获得 x1 和 y 中三列中每一列之间的皮尔逊 r 看来 pd corrwith 只能计算具有完全相同列标签的列 例如x 和 y 这似乎有点不切实际 因为我认为计算不同变量之间的相关性将是一个常见问题 In 1 import
  • 在Java中清除控制台屏幕[重复]

    这个问题在这里已经有答案了 是否有任何选项可以像 C 中的 clrscr 一样清除 Java 中的控制台屏幕 作为肮脏的黑客 我喜欢 msparer 的解决方案 我见过的一种更肮脏的方法 我自己永远不会这样做 我发誓 真的 是向控制台写入一
  • jQuery 未加载

    我正在使用 php 当我在谷歌服务器上使用 jquery 1 3 2 min js 时 它会加载并且一切运行正常 但是当我尝试使用我下载到我的服务器上的那个时 Firebug 给了我这个 1 2 3 4 5 h1 Forbidden h1
  • 更快的 numpy 笛卡尔到球坐标转换?

    我有来自 3 轴加速度计 XYZ 的 300 万个数据点数组 我想向包含等效球面坐标 r theta phi 的数组添加 3 列 下面的代码可以工作 但看起来太慢了 我怎样才能做得更好 import numpy as np import m
  • Python 从文件读取到多个列表

    我不认为有人可以指出我正确的方向 我有点想知道如何最好地从文本文件中提取值 然后将它们分解并将它们放回到与相应值相同的位置的列表中 抱歉 如果这还不清楚 也许这会让它更清楚 这是输出文件的代码 while loop with open va
  • 大文件的 Windows fsync (FlushFileBuffers) 性能

    来自有关确保数据位于磁盘上的信息 http winntfs com 2012 11 29 windows write caching part 2 an overview for application developers http wi
  • 如何在 Expect 脚本中访问环境变量?

    我想访问 Expect 脚本内的 PATH 环境变量 我怎样才能做到这一点 我的实际脚本是 usr bin expect set timeout 300 send echo PATH r 它的输出是 can t read PATH no s
  • 未从 cordova apk 加载本机库

    我正在制作一个 cordova 插件 它将是 jar 文件及其两个 so 依赖项的简单包装器 我之前已经在 Android Studio 的普通 Android 应用程序中尝试过 通过将本机库复制到 jniLibs armeabi 文件夹中
  • 插件 'org.apache.maven.plugins:maven-jboss-as-plugin' 不存在或找不到有效版本

    我遇到了 Jboss AS 7 1 1 最终部署的部署错误 如所述无法连接到远程 localhost 9999 连接超时 Jboss 7 1 1 Final https stackoverflow com questions 1575775
  • iOS 10 应用程序终止时推送通知?

    升级到 iOS 10 后 我遇到了有关推送通知的问题 我使用的是 Swift3 在正常情况下 当应用程序打开或应用程序仍在后台时 一切正常 可以按照我的逻辑接收推送通知和更新数据 但是 当应用程序终止时 当应用程序变为活动状态时 我无法处理
  • 您将如何在多个类别之间共享随机值?

    我想创建一个随机 int 值以在多个类中使用 每次我创建这些类的一组新实例时 我都希望将这个新的随机 int 值用于所有这些实例 但随机值应该是相同的 简而言之 我希望创建一个随机索引 并在多个共同生成数据的类中使用该索引 这个随机值是否应
  • apache-spark 缓存()/持久()的内存消耗

    当我尝试缓存 或持久化 MEMORY ONLY SER 我的 RDD 时 我的 Spark 集群挂起 它运行良好 大约 7 分钟即可计算出结果 如果我不使用cache 我有 6 个 c3 xlarge EC2 实例 4 个核心 每个 7 5
  • 使用以下两个命令安装 docker 时有什么区别?

    当谈到在 centos 上安装 Docker 时 我发现了两种不同的方法 第一个是 yum install docker engine 第二个是 yum install docker io 如果我使用第一个安装了 docker 那么我继续使
  • 没有实体框架的 ASP.NET 身份

    是否可以在不使用实体框架的情况下使用新的 ASP NET Identity 而是使用您自己的方法 我有一个 MVC 项目 它使用普通的 ADO NET 进行数据访问 我想实现 ASP NET 身份 但我想继续使用 ADO NET 和存储过程