如何将新创建的用户添加到sensenet中的特定安全组?
How to add a newly created user to a specific security group in 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;
}
}
}
}
组 class 的 AddMember
方法需要 IUser
或 IGroup
实例。您之前创建的用户属于 Content
类型,这是 sensenet 用于所有内容的包装类型。底层业务对象位于该内容对象内,您可以使用 ContentHandler
属性:
提取它
identifiedUsers.AddMember(user.ContentHandler as IUser);
Content 对象表示上层通用 API 层,您可以在其中找到例如字段。 ContentHandler 属性 可访问的较低层表示具有强类型 class 的业务层,例如 User
、File
或 Workspace
.
当用户在我的 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;
}
}
}
}
组 class 的 AddMember
方法需要 IUser
或 IGroup
实例。您之前创建的用户属于 Content
类型,这是 sensenet 用于所有内容的包装类型。底层业务对象位于该内容对象内,您可以使用 ContentHandler
属性:
identifiedUsers.AddMember(user.ContentHandler as IUser);
Content 对象表示上层通用 API 层,您可以在其中找到例如字段。 ContentHandler 属性 可访问的较低层表示具有强类型 class 的业务层,例如 User
、File
或 Workspace
.