2008-11-19 20 views
6

Tôi muốn biết nếu tôi đang thiếu một cái gì đó. Đây là cách tôi sẽ làm điều đó: Đối với SPFolder, tôi sẽ thay đổi quyền của mục được associtaed (SPFolder.Item). Vì vậy, tôi cho rằng việc quản lý các quyền của SPFolder sẽ giảm xuống để quản lý quyền SPListItem. Đối với SPListItem tôi sẽ đóng vai trò phá vỡ thừa kế vai trò với SPListItem.BreakRoleInheritance() và sau đó làm việc với RoleAssignments các bộ sưu tập thêm và xóa vai trò tại đó.Sharepoint: Làm thế nào để lập trình quản lý quyền SPFolder và SPListItem

Tôi tự hỏi nếu RoleAssignments là cách duy nhất để quản lý quyền của SPListItem (bên cạnh thừa kế) và có cách quản lý các quyền riêng lẻ không có vai trò. Ngoài ra còn có tài sản EffectiveBasePermissions nhưng tôi không chắc chắn.

Câu hỏi là có cách nào khác (ngoài kế thừa) để quản lý quyền SPListItem ngoài bộ sưu tập RoleAssignments không?

@Edit: cũng có AllRolesForCurrentUser, nhưng tôi đoán bạn có thể nhận được thông tin tương tự từ thuộc tính RoleAssignments, vì vậy điều này chỉ thuận tiện.

@Edit: Như Flo lưu ý trong câu trả lời của mình có một vấn đề với thiết

folder.ParentWeb.AllowUnsafeUpdates = true; 

Và sử dụng BreakRoleInheritance với lập luận của 'false' (nghĩa là không phải sao chép điều khoản của đối tượng cha mẹ).

folder.Item.BreakRoleInheritance(false); 

BreakRoleInheritance sẽ không thực hiện yêu cầu GET như bạn mong đợi sau khi cho phép cập nhật không an toàn. Có lẽ phương thức đặt lại AllowUnsafeUpdates quay lại 'false'.

Một workaround Tôi biết việc này là để tự xóa các quyền thừa kế sau khi bạn BreakRoleInheritance (true), như thế này:

folder.Item.BreakRoleInheritance(false); 
while(folder.Item.RoleAssignments.Count > 0) { 
    folder.Item.RoleAssignments.Remove(0); 
} 

Cảm ơn!

Trả lời

3

Bạn có khá nhiều quyền. Tôi tin rằng RoleAssignments thực sự là cơ chế duy nhất để quản lý quyền trực tiếp. Dưới đây là một số post hiển thị ví dụ nhanh về cách thực hiện. Tôi cũng đã sử dụng các số twoposts này khi thực hiện một số điều phức tạp hơn.

3

Điều này post cũng sẽ tương tác khi làm việc với phương pháp BreakRoleInheritance(). Đó là về một vấn đề bạn có thể gặp phải khi sử dụng BreakRoleInheritance (sai).

+0

Bạn nói đúng :) Tôi đã gặp vấn đề tương tự và cũng đã gặp phải bài đăng này. – axk

Các vấn đề liên quan