6

在 SimpleMembership 中,数据库中没有任何列可供用户被锁定/解锁。我基本上需要我的管理员启用或禁用我的应用程序中的任何用户。有没有其他选择?

4

5 回答 5

8

我发现使用角色最容易做到这一点。具有 ActiveUser 角色并使用Authorize属性标记您的控制器或操作。

[Authorize(Roles = "ActiveUser")]

然后一些简单的管理员从角色中添加或删除用户,以解锁和锁定他们对受该角色属性保护的所有内容的访问。

Roles.AddUserToRole(user.Username, "ActiveUser");

Roles.RemoveUserFromRole(user.Username, "ActiveUser");
于 2013-08-06T11:39:49.937 回答
1

可能不是“批准”的做事方式,但这就是我的做法。

pages_Membership表中有一个名为IsConfirmed的字段。通常,这适用于您需要两阶段注册过程:注册然后通过电子邮件中的链接激活。但从本质上讲,该字段与之前aspnet_Membership表中的IsApproved具有相同的影响:如果设置为 true,则用户可以登录;如果设置为 true,则用户可以登录;如果是假的,他们不能。所以我只是使用普通的旧 SQL 设置为 true 或 false:

// If using EntityFramework
// 1. Setup my params
var params = new List<SqlParameter>() { 
      new SqlParameter("@UserID", 1),
      new SqlParameter("@Activate", true) // or false
};

SqlParameter[] paramArray = params.ToArray();

// 2. Update the database
myDbContext.Database.ExecuteSqlCommand("UPDATE webpages_Membership SET IsConfirmed = @Activate WHERE UserId = @UserID", paramArray);
于 2014-09-16T12:53:35.833 回答
0

我还没有尝试过 simplemembership,但这对于我正在从事的一些小项目来说听起来很棒。以下是一些选项:

选项 1:向表中添加自定义字段,如下所示 - http://www.dwdmbi.com/2012/10/adding-custom-fields-to-vs2012-mvc4.html

选项 2使用返回给用户的外键创建一个新表。对此值进行额外检查。

无论哪种方式,您都需要额外的检查。您可以自定义“授权”属性以包括您的检查(此处的说明 -覆盖 ASP.NET MVC 中的授权属性)。

于 2012-11-06T07:01:54.010 回答
0

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

MembershipUser user = Membership.GetUser(username);
user.IsApproved = false;
Membership.UpdateUser(user);

这并不完全锁定用户。从技术上讲,此呼叫正在从用户那里获得批准状态,并使他们无法登录。

于 2015-01-19T05:47:54.593 回答
-1

我不知道您正在使用的技术,但是您必须按照指定的方式在表中提供具有锁定解锁功能的列,或者在数据库中添加一个表(例如 tlbDisable),您可以在其中删除原始表中的条目并将其插入新表表(tlbDisable)。

当您再次想要启用该用户时,只需从 tlbDisable 中删除该条目并将其插入原始用户表中。

于 2012-11-06T06:44:56.120 回答