【问题标题】:How can I assigned roles automatically in webmatrix如何在 webmatrix 中自动分配角色
【发布时间】:2014-06-22 17:14:17
【问题描述】:

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

【问题讨论】:

    标签: database webmatrix roles resolve webmatrix-2


    【解决方案1】:

    在您的注册代码(在示例 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。

    【讨论】:

      【解决方案2】:

      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);
      }
      

      【讨论】:

        猜你喜欢
        • 2015-03-05
        • 1970-01-01
        • 2014-04-04
        • 2021-03-14
        • 2016-06-21
        • 1970-01-01
        • 1970-01-01
        • 2023-02-14
        • 2013-02-12
        相关资源
        最近更新 更多