[英]Asp.Net Identity connecting to DB via Web Api
我正在使用旧的MVC应用程序,该应用程序最初通过自定义类和实现进行表单身份验证。 我已经对其进行了修改,并利用了按预期工作的Asp.Net Identity。
我现在的要求是该MVC应用程序不再应该直接访问数据库。 因此,我从web.config中删除了连接字符串,并一直在考虑通过对我的Web服务(Asp.Net Web Api)的调用来进行所有数据库调用。
我有以下自定义类:
UserStore
RoleStore
请注意,我有一个自定义用户类,因为它是一个自定义用户表。
问题
1)是实现我目标的正确方法吗? 我可能会覆盖许多以前使用IdentityDBContext的方法,例如:
public override Task<CustomUser> FindByIdAsync(int usrID)
public override Task<Customer> FindByNameAsync(string userName)
2)我发现
FindByNameAsync()
正在按预期方式工作,并且用户正在传递给方法,但是FindByIdAsync()将用户ID传递为0。为什么FindByIdAsync()没有传递我的实际用户ID?
要调用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(以及所需的其他接口),为此,Internet上有很多答案和指南。 一个好的起点是:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.