我想自动为新注册用户分配数据库中成员的角色。
问问题
228 次
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 回答