我正在寻找一种方法来禁用用户,而不是将其从系统中删除,这是为了保持相关数据的数据完整性.但ASPNET identity似乎只提供Delete account.

有一个新的锁定功能,但似乎可以控制锁定来禁用用户,但只有在try 了一定数量的错误密码后才能将用户锁定.

还有其他 Select 吗?

推荐答案

当您创建一个安装了标识位的站点时,您的站点将有一个名为"IdentityModels.cs"的文件.在这个文件中有一个名为ApplicationUser的类,它继承自IdentityUser.

// You can add profile data for the user by adding more properties to your ApplicationUser class, please visit https://devblogs.microsoft.com/aspnet/customizing-profile-information-in-asp-net-identity-in-vs-2013-templates/ to learn more.
public class ApplicationUser : IdentityUser

那里的 comments 中有一个很好的链接,为方便起见,请单击here

本教程确切地告诉您为您的用户添加自定义属性需要做些什么.

实际上,甚至不用看教程.

  1. 向ApplicationUser类添加属性,例如:

    公共场所?IsEnabled{get;set;}

  2. 在数据库中的AspNetUsers表中添加同名的列.

  3. 轰,就是这样!

现在,在AccountController中,您有一个注册操作,如下所示:

public async Task<ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser { UserName = model.Email, Email = model.Email, IsEnabled = true };
                var result = await UserManager.CreateAsync(user, model.Password);
                if (result.Succeeded)

我在创建ApplicationUser对象时添加了IsEnabled=true.现在,该值将保存在AspNetUsers表的新列中.

然后,您需要在登录过程中通过重写ApplicationSignInManager中的PasswordSignInAsync来判断该值.

我是这样做的:

public override Task<SignInStatus> PasswordSignInAsync(string userName, string password, bool rememberMe, bool shouldLockout)
    {
        var user = UserManager.FindByEmailAsync(userName).Result;

        if ((user.IsEnabled.HasValue && !user.IsEnabled.Value) || !user.IsEnabled.HasValue)
        {
            return Task.FromResult<SignInStatus>(SignInStatus.LockedOut);
        }

        return base.PasswordSignInAsync(userName, password, rememberMe, shouldLockout);
    }

你的里程数可能会有所不同,你可能不想返回该标志状态,但你明白了.

Asp.net相关问答推荐

ASP.NET MVC项目中的产品采购并发性测试

由于 Blazor Change Detection API,组件重新渲染被跳过.如何避免?

授权错误错误 400:C# 上的 redirect_uri_mismatch

为 Web 请求实现速率限制算法的最佳方法是什么?

如何在页面加载之前运行 JavaScript 代码?

带有 Web 套接字的 SignalR

如何判断一个IP地址是否是私有的?

如何在 FileUpload 控件中限制文件类型

Web.config 导致被组策略阻止错误

带有邮箱地址参数的 WebApi 方法从 HttpClient 返回 404

如何获取 ASP.NET 应用程序的完整虚拟路径

无法序列化会话状态

如何在不预编译的情况下使用命令行msbuild部署VS2012网站项目?

如何在 ASP.NET MVC 中设置时区?

根据条件更改 GridView 行 colored颜色

好的 ASP.NET 类似 excel 的网格控件?

Page.IsPostBack 和 Page.IsCallBack 有什么区别?

ModelClientValidationRule 冲突

如何创建代表 colored颜色 的随机十六进制字符串?

您的下一个 ASP.NET 项目的 Select 是什么:Web 窗体还是 MVC?