如何在webmatrix中自动分配角色

时间:2014-05-06 07:43:02

标签: database webmatrix roles resolve webmatrix-2

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

2 个答案:

答案 0 :(得分:1)

WebMatrix示例Starter Site app - 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);
}

答案 1 :(得分:0)

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

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

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