首页 > 解决方案 > 如何将新创建的用户添加到 sensenet 中的特定安全组?

问题描述

当用户在我的 Web 应用程序中注册帐户时,我希望将他们添加到安全组标识的用户中,以便他们拥有运行我的 Web 应用程序所需的权限。这是我尝试过的。

using SenseNet.ContentRepository.Storage;
using SenseNet.ContentRepository.Storage.Security;

namespace DerAssistantService.Actions
{
  public static class UserActions
  {
    [ODataAction]
    public static Content RegisterUser(Content content, string email, string password)
    {
        if (string.IsNullOrEmpty(email))
            throw new ArgumentNullException(nameof(email));
        if (string.IsNullOrEmpty(password))
            throw new ArgumentNullException(nameof(password));

        var username = email.Split('@').First();

        using (new SystemAccount())
        {
            var user = Content.CreateNew("User", content.ContentHandler, username);

            user["FullName"] = username;
            user["Email"] = email;
            user["LoginName"] = email;
            user["Enabled"] = true;
            user["Password"] = password;
            user.Save();

            var identifiedUsers = Node.Load<Group>("/Root/IMS/BuiltIn/Portal/IdentifiedUsers");
            identifiedUsers.AddMember(user); // Error because type Content is not of type IGroup 

            return user;
        }
     }
  }
}

标签: sensenet

解决方案


AddMembergroup 类的方法需要一个IUser或一个IGroup实例。您之前创建的用户属于Content类型,它是 sensenet 用于所有内容的包装类型。底层业务对象位于该内容对象内,您可以使用以下ContentHandler属性提取它:

identifiedUsers.AddMember(user.ContentHandler as IUser); 

Content 对象代表上层通用 API 层,例如,您可以在其中找到字段。可由 ContentHandler 属性访问的较低层表示具有强类型类(如UserFile或)的业务层Workspace


推荐阅读