3

我想自动为新注册用户分配数据库中成员的角色。

4

2 回答 2

1

WebMatrix 示例 Starter Site 应用程序 - Account\Register.cshtml

经过测试,它可以工作。

// Check if user already exists
var user = db.QuerySingle("SELECT Email FROM UserProfile WHERE LOWER(Email) = LOWER(@0)", email);
if (user == null) {
// Insert email into the profile table
db.Execute("INSERT INTO UserProfile (Email) VALUES (@0)", email);

//Roles have already been added to webpages_Roles table
//Logic to determine role for e-mail (user) being added for the first time
if (email == "John@gmail.com") {
    var userName=email;
    var roleName="Administrator";
    Roles.AddUserToRole(userName, roleName);
} 
else if (email == "Greg@gmail.com") {
    var userName=email;
    var roleName="Guest";
    Roles.AddUserToRole(userName, roleName);
}
else {
    //All others are assigned the role of Member
    var username=email;
    var roleName="Member";
    Roles.AddUserToRole(userName, roleName);
}
于 2014-09-01T02:47:25.643 回答
0

在您的注册代码(在示例 WebMatrix 应用程序中的文件 Account\Register.cshtml 中找到)中,有 if 语句首先确定所提交的信息是有效的,然后确定电子邮件在您的数据库中不存在。在这些 if 语句中,如果成功创建了用户,那么您可以添加如下代码:

// boy, is this a hack, Member = RoleID 8
db.Execute("INSERT INTO webpages_UsersInRoles (UserId, RoleID) VALUES( @0, 8 )", UserID);

现在我以 8 为例。查看您的 pages_Roles 表。这有一个 RoleNames 及其 RoleID 的列表。如果您已经创建了成员角色,它将在此表中。使用相应的 RoleID 而不是我使用的 8。

于 2014-05-06T10:45:39.487 回答