通过Web API连接到数据库的ASP.NET身份



我正在处理一个传统MVC应用程序,该应用程序最初通过自定义类和实现进行了表格身份验证。我已经对其进行了修改并利用ASP.NET身份,该身份正在按预期工作。

我现在的要求是,该MVC应用程序不再应该直接访问数据库。因此,我已经从Web.config删除了连接字符串,并一直在考虑通过呼叫我的Web服务进行所有数据库调用(ASP.NET Web API(。

我有:

的自定义类
  • UserStore
  • RoleStore
  • etc

请注意,我有一个自定义用户类,因为它是自定义用户表。

问题

1(实现我的目标的正确方法吗?我很可能会覆盖许多以前使用IdentityDbContext的方法,例如:

public override Task<CustomUser> FindByIdAsync(int usrID)
public override Task<Customer> FindByNameAsync(string userName)

2(我发现

findbyNameAsync((

正在按预期工作,并且用户正在传递给方法,但是FindbyIdAsync((将用户ID作为0。

致电FindByIdAsync()我正在实施一个USERSTORE:

public class CustomUserStore : UserStore
    <
        CustomUser, 
        CustomRole, 
        int,
        CustomUserLogin, 
        CustomUserRole, 
        CustomUserClaim
    >
{

然后覆盖FindByIdAsync():

public override Task<CustomUser> FindByIdAsync(int usrID)
    {
        var response = client.GetAsync("api/user/" + usrID).Result.Content;
        return response.ReadAsAsync<CustomUser>(
             new List<MediaTypeFormatter> {
                new XmlMediaTypeFormatter(),
                new JsonMediaTypeFormatter()
            });
        //return base.FindByIdAsync(userId);
    }

问题是usrID是0。

我现在有此功能,因此我的MVC应用程序正在使用aspnet.Identity,但对于所有数据库称呼,它都在调用我的API。该解决方案确实是为了实现iuserstore(以及需要根据需要的其他接口(,为此,互联网上有很多答案和指南。一个好的起点是:

https://learn.microsoft.com/en-us/aspnet/istentity/endesity/extensibility/overview-obsom-custom-custom-storage-providers-for-aspnet-sideity

相关内容

  • 没有找到相关文章

最新更新