#c# #asp.net #vb.net #dotnetnuke
#c# #asp.net #vb.net #dotnetnuke
Вопрос:
Я создал папку в DotNetNuke программно в корневом каталоге портала. Я просто хочу назначить права доступа к ней только один раз, например, я хочу сделать ее доступной только для чтения аутентифицированным пользователям. Есть какие-нибудь советы о том, как это сделать с помощью C # или VB.NEt ?
Спасибо.
Ответ №1:
Это довольно сложный процесс:
var folderController = new FolderController();
var folderId =
folderController.AddFolder(
new FolderInfo(
portalId,
folderName,
(int)FolderController.StorageLocationTypes.InsecureFileSystem,
isProtected: false,
isCached: false,
lastUpdated: Null.NullDate));
var folder = folderController.GetFolderInfo(portalId, folderId);
Directory.CreateDirectory(folder.PhysicalPath);
var permissionController = new PermissionController();
var writePermission = permissionController.GetPermissionByCodeAndKey("SYSTEM_FOLDER", "WRITE").Cast<PermissionInfo>().Single();
var registeredUserRole = new RoleController().GetRoleByName(folder.PortalID, "Registered Users");
folder.FolderPermissions.Add(new FolderPermissionInfo
{
FolderID = folder.FolderID,
PermissionID = writePermission.PermissionID,
RoleID = registeredUserRole.RoleID,
UserID = Null.NullInteger,
PermissionKey = writePermission.PermissionKey,
AllowAccess = false
});
Комментарии:
1. Это действительно немного запутанно, но ваш ответ облегчает понимание. Большое вам спасибо.
2. bdukes — есть ли способ установить для всех пользователей разрешения типа чтение файлов
3. @codemypantsoff Вы должны иметь возможность задать
RoleID
значениеint.Parse(DotNetNuke.Common.Globals.glbRoleAllUsers, CultureInfo.InvariantCulture)
, чтобы установить разрешение для всех пользователей. Ключом разрешения на чтение является"READ"
.
Ответ №2:
Следующий код не добавил разрешения для меня в базу данных.
folder.FolderPermissions.Add(new FolderPermissionInfo
{
FolderID = folder.FolderID,
PermissionID = writePermission.PermissionID,
RoleID = registeredUserRole.RoleID,
UserID = Null.NullInteger,
PermissionKey = writePermission.PermissionKey,
AllowAccess = false
});
Мне пришлось использовать:
FolderManager.Instance.SetFolderPermission(folder, 6, registeredUserRole.RoleID);
- папка = FolderInfo
- 6 = Идентификатор разрешения, напишите в этом случае (это также добавит разрешения: просмотр / browse).
- registeredUserRole.RoleId = роль, которой вы хотите предоставить права доступа к папке.