MVC 5自定义用户存储

 Posion丶丨 发布于 2023-02-09 14:39

我需要构建一个自定义UserStore(基本上因为我有一些默认情况下不属于框架的要求)但我无法找到任何关于如何执行此操作的文档.

我看到两条信息很接近:

    http://kazimanzurrashid.com/posts/implementing-user-confirmation-and-password-reset-with-one-asp-dot-net-identity-pain-or-pleasure - 这似乎适用于早期版本:(

    和 MVC 5 IoC和身份验证 - 这与我的要求类似,但我需要看一些代码:(

基本上我需要知道如何创建用户以及如何登录.其余我可以弄明白.我想主要问题是处理密码等.

有没有人知道任何可能对我有帮助的文件?或者,如果默认的UserStore存在细分,那么它的内部方法会很好(我可以从那里进行调整).

1 个回答
  • 这实际上并不那么难.

    创建一个实现IUserStore接口的新类.

    public class MyUserStore : IUserStore<User> { }
    

    ......然后实施其方法.我认为有5或6个开始,处理创建/更新/删除/查找用户.如果您正在为您的用户实体使用实体框架,那么只需构造函数将其实例注入您的用户存储实例.

    public class MyUserStore : IUserStore<User>
    {
        private readonly MyDbContext _dbContext;
        public MyUserStore(MyDbContext dbContext) { _dbContext = dbContext; }
    }
    

    然后,在接口方法中,只需委托给dbcontext:

    Task IUserStore<User>.CreateAsync(User user)
    {
        _dbContext.Set<User>().Create(user);
        return Task.FromResult(0);
    }
    

    然后,您可以实现许多其他可选接口以支持其他功能.例如,如果您希望UserStore能够为您处理密码加密,请实现IUserPasswordStore:

    public class MyUserStore : IUserStore<User>, IUserPasswordStore<User> { }
    

    ...等等其他接口,如IUserRoleStore等.

    可能真正有用的是反编译工具,如.NET Reflector或ReSharper的Navigate To Decompiled Sources功能.如果您在Microsoft.AspNet.Identity.EntityFramework库中反编译默认的UserStore,您可以看看他们是如何做到的.一些反编译的代码可能难以阅读,因为有些方法是异步的,但你应该得到它的要点.

    2023-02-09 14:42 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有