This lesson will guide you through using the static SecuritySystem class to check whether or not a user has particular permission. The SetTask Action will be accessible to users who have permission to modify DemoTask objects.

本课将指导您使用静态安全系统类检查用户是否具有特定权限。具有修改演示任务对象权限的用户可以访问 SetTask 操作。

Note 注意
Before proceeding, we recommend that you review the following lessons.
在继续之前,我们建议您复习以下课程。
  • Using the Security System
  • 使用安全系统
  • Add an Action with Option Selection
  • 添加具有选项选择的操作
  • Open the TaskActionsController.cs (TaskActionsController.vb) file you created in the Add an Action with Option Selection lesson. Add the "using" directive and modify the Activated event handler as shown below.

  • 打开您在"使用选项选择添加操作"一课中创建的TaskActionsController.cs(TaskActions控制器.vb)文件。添加"using"指令并修改激活的事件处理程序,如下所示。

using DevExpress.ExpressApp.Security;
//...
public partial class TaskActionsController : ViewController {
// ...
private void TaskActionsController_Activated(object sender, EventArgs e) {
View.SelectionChanged += new EventHandler(View_SelectionChanged);
UpdateSetTaskActionState();
}
void View_SelectionChanged(object sender, EventArgs e) {
UpdateSetTaskActionState();
}
private void UpdateSetTaskActionState() {
bool isGranted = true;
foreach(object selectedObject in View.SelectedObjects) {
bool isPriorityGranted = SecuritySystem.IsGranted(new PermissionRequest(ObjectSpace,
typeof(DemoTask), SecurityOperations.Write, selectedObject, "Priority"));
bool isStatusGranted = SecuritySystem.IsGranted(new PermissionRequest(ObjectSpace,
typeof(DemoTask), SecurityOperations.Write, selectedObject, "Status"));
if(!isPriorityGranted || !isStatusGranted) {
isGranted = false;
}
}
SetTaskAction.Enabled.SetItemValue("SecurityAllowance", isGranted);
}
}

With the added code, the Set Task Action will be activated for users who have write permissions for the Priority and Status properties of the selected DemoTask objects.

使用添加的代码,将为具有所选 DemoTask 对象的"优先级"和"状态"属性的写入权限的用户激活"设置任务操作"。

  • Add a user who does not have permission to modify the DemoTask objects (see Using the Security System). Run the application as this new user. The Set Task Action will not be visible when you display the Demo Task List View.
  • 添加无权修改"演示任务"对象的用户(请参阅使用安全系统)。以此新用户身份运行应用程序。显示演示任务列表视图时,"设置任务"操作将不可见。

This is the last lesson of the Comprehensive Tutorial. To learn more about the main concepts for building business applications and extending XAF tools, refer to the Concepts section. If you need task-based help, take a look at the Task-Based Help section. To learn how to deploy XAF applications, review the Deployment Tutorial.

这是综合教程的最后一课。要了解有关构建业务应用程序和扩展 XAF 工具的主要概念的详细信息,请参阅概念部分。如果您需要基于任务的帮助,请查看基于任务的帮助部分。要了解如何部署 XAF 应用程序,请查看部署教程。

Access the Security System in Code 在代码中访问安全系统的更多相关文章

  1. Implement Property Value Validation in Code 在代码中实现属性值验证(XPO)

    This lesson explains how to set rules for business classes and their properties. These rules are val ...

  2. Spring MVC框架下在java代码中访问applicationContext.xml文件中配置的文件(可以用于读取配置文件内容)

    <bean id="propertyConfigurer" class="com.****.framework.core.SpringPropertiesUtil& ...

  3. Using the Security System 使用安全系统

    In this lesson, you will learn how to use a Security System in the application. When you use this sy ...

  4. 在ASP.NET项目中的web.config文件里配置数据库连接并在程序代码中获取连接字符串

      1.在<connectionStrings> 标签里添加连接 <connectionStrings> <add name="ConnectionName&q ...

  5. 【Azure 云服务】在Cloud Service的代码中如何修改IIS Application Pool的配置呢? 比如IdleTimeout, startMode, Recycling.PeriodicRestart.Time等

    什么是 PaaS?Platform as a Service 平台即服务 (PaaS) 是云中的完整开发和部署环境,你可以使用其中资源交付内容,从基于云的简单应用到启用云的复杂企业应用程序皆可.你以即 ...

  6. 如何在代码中取得一个特点type的关节

    我们可以在初始化方法中添加如下代码: -(void)didLoadFromCCB{ Class distanceJointClass = NSClassFromString(@"CCPhys ...

  7. Entity Framework 5.0系列之自动生成Code First代码

    在前面的文章中我们提到Entity Framework的"Code First"模式也同样可以基于现有数据库进行开发.今天就让我们一起看一下使用Entity Framework P ...

  8. 自动生成Code First代码

    自动生成Code First代码 在前面的文章中我们提到Entity Framework的“Code First”模式也同样可以基于现有数据库进行开发.今天就让我们一起看一下使用Entity Fram ...

  9. 【转】Entity Framework 5.0系列之自动生成Code First代码

    在前面的文章中我们提到Entity Framework的“Code First”模式也同样可以基于现有数据库进行开发.今天就让我们一起看一下使用Entity Framework Power Tools ...

随机推荐

  1. make命令和makefile

    make命令和Makefiles: 1. make是一个命令,解释makefile中指令的命令工具,不同的IDE有自己的make命令. 1. make命令不知道怎么去构建程序,必须有一个文件告诉mak ...

  2. 使用jieba分析小说太古神王中,男主更爱谁?去文章中找答案吧!#华为云·寻找黑马程序员#

    欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...

  3. Python自带又好用的代码调试工具Pdb学习笔记

    返璞归真 这几天项目有一个linux下部署数据库的操作,数据库使用python进行初始化安装.然后问题来了,由于linux服务器涉及安全要求,除了代码以来的Python3.6版本外不允许安装其他插件与 ...

  4. Bomb后端云使用

    Bomb是后台云托管工具,在Bomb官网注册会员,即可免费使用后台数据库服务.https://www.bmob.cn/app/list 创建应用后,在设置里获取密钥.根据官方文档集成. 在集成后运行时 ...

  5. 移动前端不得不了解的HTML5 head 头标签 —— Meta 标签

    Meta 标签 meta标签是HTML中head头部的一个辅助性标签,它位于HTML文档头部的 <head> 和 <title> 标记之间,它提供用户不可见的信息.虽然这部分信 ...

  6. emmet的html和css使用技巧大全

    emmet html使用技巧大全 ! 初始化 >:后代+:兄弟^:向上*:乘法$:数字():分组#:id命名.:类命名 一.id,类命名p#infop.infoa[href=#] 二.后代:di ...

  7. csuoj-1900 锋芒毕露

    Description 小闪最近迷上了二刀流——不过他耍的其实是剑——新买了一个宝库用来专门存放自己收集的双剑.一对剑有两把,分只能左手用的和只能右手用的,各自有一个攻击力数值.虽然一对剑在小闪刚拿到 ...

  8. 笔记||Python3之列表与元组

    列表List: 特性:①列表也是一种Squence类型 ②下标 ③能切片 ④可以存储任何类型的数据,每个元素是任意类型 ⑤内容可以改变:增删改查 1  --  值   列表的元素值是可以改变的   a ...

  9. 【JS】327- javascript 的 api 设计原则

    点击上方"前端自习课"关注,学习起来~ 前言 本篇博文来自一次公司内部的前端分享,从多个方面讨论了在设计接口时遵循的原则,总共包含了七个大块.系卤煮自己总结的一些经验和教训.本篇博 ...

  10. 【重温基础】15.JS对象介绍

    从这篇文章开始,复习 MDN 中级教程 的内容了,在初级教程中,我和大家分享了一些比较简单基础的知识点,并放在我的 [Cute-JavaScript]系列文章中. 关于[Cute-JavaScript ...