商信互联
本课程将指导您使用SecurityStrategy类检查用户是否具有特定权限。该SetTask行动将是谁有权修改用户访问DemoTask对象。
打开在“添加带有选项选择的操作”课程中创建的TaskActionsController.cs(TaskActionsController.vb)文件。添加“ using”指令并修改Activated事件处理程序,如下所示。
using DevExpress.ExpressApp.Security;
//...
public partial class TaskActionsController : ViewController {
// ...
private void TaskActionsController_Activated(object sender, EventArgs e) {
View.SelectionChanged = View_SelectionChanged;
UpdateSetTaskActionState();
}
void View_SelectionChanged(object sender, EventArgs e) {
UpdateSetTaskActionState();
}
private void UpdateSetTaskActionState() {
bool isGranted = true;
SecurityStrategy security = Application.GetSecurityStrategy();
foreach(object selectedObject in View.SelectedObjects) {
bool isPriorityGranted = security.CanWrite(selectedObject, nameof(DemoTask.Priority));
bool isStatusGranted = security.CanWrite(selectedObject, nameof(DemoTask.Status));
if(!isPriorityGranted || !isStatusGranted) {
isGranted = false;
}
}
SetTaskAction.Enabled.SetItemValue("SecurityAllowance", isGranted);
}
}
Imports DevExpress.ExpressApp.Security
'...
Partial Public Class TaskActionsController
Inherits ViewController
' ...
Private Sub TaskActionsController_Activated(ByVal sender As Object, ByVal e As EventArgs)
AddHandler View.SelectionChanged, AddressOf View_SelectionChanged
UpdateSetTaskActionState()
End Sub
Private Sub View_SelectionChanged(ByVal sender As Object, ByVal e As EventArgs)
UpdateSetTaskActionState()
End Sub
Private Sub UpdateSetTaskActionState()
Dim isGranted As Boolean = True
Dim security As SecurityStrategy = Application.GetSecurityStrategy()
For Each selectedObject As Object In View.SelectedObjects
Dim isPriorityGranted As Boolean = security.CanWrite(selectedObject, NameOf(DemoTask.Priority))
Dim isStatusGranted As Boolean = security.CanWrite(selectedObject, NameOf(DemoTask.Status))
If Not isPriorityGranted OrElse Not isStatusGranted Then
isGranted = False
End If
Next selectedObject
SetTaskAction.Enabled.SetItemValue("SecurityAllowance", isGranted)
End Sub
End Class
使用添加的代码,将对具有对选定DemoTask对象的Priority和Status属性具有写权限的用户激活Set Task Action 。
这是《综合教程》的最后一课。要了解有关构建业务应用程序和扩展XAF工具的主要概念的更多信息,请参阅“概念”部分。如果您需要基于任务的帮助,请查看“基于任务的帮助”部分。要了解如何部署XAF应用程序,请查看部署教程。