C# 没有实体框架的ASP.NET标识
是否可以在不使用实体框架的情况下使用新的ASP.NET标识,而使用您自己的方法C# 没有实体框架的ASP.NET标识,c#,asp.net,.net,asp.net-mvc,asp.net-identity,C#,Asp.net,.net,Asp.net Mvc,Asp.net Identity,是否可以在不使用实体框架的情况下使用新的ASP.NET标识,而使用您自己的方法 我有一个MVC项目,它使用普通的ADO.NET进行数据访问。我想实现ASP.NET标识,但我想继续使用ADO.NET和存储过程。这就是我选择的方式。我对自己也有类似的要求,并且实现了ASP.NET Identity framework的纯SQL Server版本 我首先创建了一个示例项目(使用实体框架),然后观察它创建的表。然后我将它们移植到一个VisualStudioSQL项目中 接下来,我提供了关于哪些方法需要实
我有一个MVC项目,它使用普通的ADO.NET进行数据访问。我想实现ASP.NET标识,但我想继续使用ADO.NET和存储过程。这就是我选择的方式。我对自己也有类似的要求,并且实现了ASP.NET Identity framework的纯SQL Server版本 我首先创建了一个示例项目(使用实体框架),然后观察它创建的表。然后我将它们移植到一个VisualStudioSQL项目中 接下来,我提供了关于哪些方法需要实现以及哪些方法与数据库交互的指导(注意:并非商店中的所有方法都需要/应该)。链接上的代码是针对MySQL的,但让我很好地理解了如何实现等 我仍然拥有使用Sql为ASP.NETIdentity框架编写的代码。所以如果我周末有时间的话,我会看看它的状态有多好,可能会上传到github,并在这里用链接更新
但同时,使用链接-它也提供了良好的学习体验 我正在使用Asp.Net Identity 2.2.1。 我实现这一点的方式是创建自己的用户:
public class MyUser : IUser {...}
然后创建我自己的UserStore:
(实现您实现的接口所需的所有方法,并在这些方法上使用您的数据访问来拉/插入数据。例如,我创建了另一个dal类,用于访问数据库,我在我的用户存储中提供了一个方法的示例,但这与您实现的所有其他方法的想法相同)
然后在我的UserManager上,我将用户存储设置为:
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
}
public UserManager() : base(new MyUserStore())
{
//anything else you need on the constructor
}
注意:
并非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);
}
public Task IncrementAccessFailedCountAsync(MyUser)
{
//这里我刚刚更新了user对象,因为我知道UpdateAsync()方法稍后将被调用。
返回Task.FromResult(++用户.FailedAttempts);
}
这是一个很好的工作示例(MVC 6)和ASP.NET 5 Identity(>=v3)框架的实现库,没有MongoDB.Driver(>=v2.1.0)的实体框架。你上传了你的版本吗?你能分享代码ApplicationUserManager
和ApplicationSignInManager
吗。我实现了MyUserStore
,但在实现上述两个类时遇到了问题。我也在使用dapper。ApplicationUserManager
:公共类ApplicationUserManager:UserManager{public ApplicationUserManager():base(new MyUserStore()){…}
在构造函数上,必须将UserStore设置为实现的参数,在这种情况下,MyUserStore
。我认为这是应用程序用户管理器中唯一重要的部分,在这里添加太长了;但我剩下的只是PasswordValidator、dataProtectionProvider和EmailService的配置,但这与模板代码相同,您不需要对ApplicationUserManager进行太多更改。因为访问数据的代码是UserStore上的代码,所以这就是您的实现
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);
}