如何更改ASP MVC5中的UserLockoutEnabledByDefault和DefaultAccountLockoutTimeSpan

时间:2017-07-24 06:46:31

标签: c# asp.net

我想让管理员能够更改用户帐户的DefaultAccountLockoutTimeSpan和UserLockoutEnabledByDefault

基本上,当启动应用程序时,Identidy.cs的默认值为

        manager.UserLockoutEnabledByDefault = true;
        manager.DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(5);
        manager.MaxFailedAccessAttemptsBeforeLockout = 5;

现在在管理控制器中,我想允许管理员更改这些值

所以我创建了一个动作结果

 [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult ChangeDefaultUserLockingSetting(int PasswordAttempts, int DefaultLockingTime)
        {

            UserManager.DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(DefaultLockingTime);
            UserManager.MaxFailedAccessAttemptsBeforeLockout = PasswordAttempts;

            return View("Index", loadAdministrationViewModel());
        }

现在在管理员html中,我有一个表单:

  @using (Html.BeginForm("ChangeDefaultUserLockingSetting", "Administration", FormMethod.Post, new { }))
    { 
        @Html.AntiForgeryToken()
        @Html.TextBoxFor(m => m.PasswordAttempts)
        @Html.TextBoxFor(model => model.DefaultLockingTime)

        <input type="submit" value="Submit strongly type synchronous form" />
    }

但是当表单传递值并触发操作结果时,默认值不会覆盖也不会更改,我做错了什么?

1 个答案:

答案 0 :(得分:0)

我最终通过

解决了我自己的问题

在为会话设置保留的数据库中创建表

当应用程序运行时,我所做的就是阅读它们:

    manager.UserLockoutEnabledByDefault = AccountSettings.getUserlock();
    manager.DefaultAccountLockoutTimeSpan = AccountSettings.getLockOutTime();
    manager.MaxFailedAccessAttemptsBeforeLockout = AccountSettings.getMaxFailedAccount();