【问题标题】:MVC3 Locking membership userMVC3 锁定会员用户
【发布时间】:2013-03-19 03:06:39
【问题描述】:

我希望我站点上的管理员能够锁定成员,但默认 mvc 成员身份的 IsLockedOut() 是只读的。我读到我需要创建一个自定义会员提供程序,但我不完全确定这意味着什么。我需要创建一个具有 membersUser 属性的新模型吗?如果可能,我不想在数据库中创建新表。

这是我的 lockUser 方法的代码:

public static void LockUser(this MembershipUser user)
    {
        using (var db = new MovieContext())
        {
            Guid userid = (Guid)user.ProviderUserKey;
            MembershipUser member = Membership.GetUser(userid);
            member.IsLockedOut = true;
            member.LastLockoutDate = DateTime.Now;
            db.SaveChanges();
        }
    }

【问题讨论】:

  • 正如@SLaks 指出的那样,aspnet_Membership 表有一个名为 IsLockeOut 的布尔字段。将其设置为 true。
  • 我试过了——它是只读的。
  • 不是会员对象。数据库字段。
  • 如何直接访问数据库?
  • 我看到一个这样的例子: var member = db.aspnet_Membership.Single(m => m.UserId == userid);但我的上下文没有找到定义。

标签: c# asp.net-mvc asp.net-mvc-3 asp.net-membership custom-membershipprovider


【解决方案1】:

安德鲁,试试这个方法。它使用 IsApproved 而不是 IsLockedOut。如果您的实现尚未使用 IsAproved,这将是一个很好的解决方案。

MembershipUser muUser = Membership.GetUser(strUsernameToActOn);
muUser.IsApproved = false;
Membership.UpdateUser(muUser);

这并没有完全锁定用户。从技术上讲,此呼叫正在获得用户的批准状态,并导致他们无法登录。

【讨论】:

  • 这行得通,如果它归结为它我会使用这种方式,但我更愿意设置 IsLockedOut = true 并将锁定日期设置为当前时间。
  • @Andrew,为此你必须去数据库。我已经做到了。详细了解 EF 并实现您自己的方法。
  • 谢谢,我会再调查一下。
  • 想了想,这总比把用户锁在外面要好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多