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. Ctrl + Shift + F7 ; F3、Shift + F3

    pycharm 查找并高亮参数 选中某一参数,Ctrl + Shift + F7  高亮所有该文件中所有该参数 接下来, 按 F3 在所有高亮选择中向下移动一个, Shift + F3 在所有高亮选择 ...

  2. ssm三大框架整合基本配置

    ssm三大框架整合基本配置 maven目录结构 数据库脚本mysql create database maven; use maven ; -- --------------------------- ...

  3. 接口访问报错:The valid characters are defined in RFC 7230 and RFC 3986

    写了个接口,在测试访问的时候,需要传json串,但是后台报错了 The valid characters are defined in RFC 7230 and RFC 3986 当前使用的tomca ...

  4. oracle开启关闭日志归档

    oracle归档日志开启之后,会产生大量的日志,需要定时清理以及不重要的数据库可以不开启归档模式,下面介绍一下oracle归档开启.关闭以及日志的删除:一.oracle归档日志开启及关闭1.登录服务端 ...

  5. 添加-ObjC的含义

    http://www.cnblogs.com/yashi88/p/3551947.html 参考文章 当使用某个第三方库时,遇到 出现"selector not recognized&quo ...

  6. Cookie俩步操作实现n天免登陆

    实现这个功能主要思路是:在登录成功的时候去给用户名和密码加上Cookie,将他们的值存在Cookie中,为了下次登录记住用户名和密码,然后在登录界面,获取所有的cookie,然后将值一一遍历出来.和用 ...

  7. 从RTL视图到Verilog语言-转可乐豆原创

    从RTL视图到Verilog语言 曾经听过某位大牛都说:“当你的学习FPGA到一个境界的时候,你看到的硬件描述语言,将不再是单纯的语言,而是由一个个逻辑门组成的电路图,一旦达到这个境界,方能把代码写到 ...

  8. 【MySql】使用学习

    [MySql]使用学习 =================================================== 1.太多的连接 Too many connections ======= ...

  9. 7个点说清楚spring cloud微服务架构

    前言 spring cloud作为当下主流的微服务框架,让我们实现微服务架构简单快捷,spring cloud中各个组件在微服务架构中扮演的角色如下图所示,黑线表示注释说明,蓝线由A指向B,表示B从A ...

  10. java面试题干货1-50

    1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: - 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪些属性和行为,并不关注 ...