商信互联
本主题描述可与安全系统一起使用的身份验证方法。
要添加安全支持,请启动应用程序设计器,然后将SecurityStrategyComplex组件从Visual Studio工具箱拖放到设计器的“安全性”窗格中。
在本主题中,我们将从使用Active Directory身份验证开始。默认情况下,使用此身份验证类型时,安全系统会自动为您当前的Windows帐户创建一个管理用户。XAF应用程序不存储密码,身份检查由Windows执行。用户名是通过WindowsIdentity对象获得的,看起来像COMPUTERNAME \ UserName或DOMAINNAME \ UserName。要启用Active Directory身份验证,请将AuthenticationActiveDirectory组件拖放到SecurityStrategyComplex附近的设计器中。
如果使用实体框架,则将内置的安全实体添加到DbContext中(需要引用DevExpress.ExpressApp.Security.v 19.2 .dll程序集),并将SecurityStrategy.UserType和SecurityStrategyComplex.RoleType属性设置为PermissionPolicyUser和PermissionPolicyRole, 分别。XPO不需要此步骤。
using DevExpress.Persistent.BaseImpl.EF.PermissionPolicy;
// ...
public DbSet<PermissionPolicyRole> Roles { get; set; }
public DbSet<PermissionPolicyUser> Users { get; set; }
public DbSet<PermissionPolicyTypePermissionObject> TypePermissionObjects { get; set; }
Imports DevExpress.Persistent.BaseImpl.EF.PermissionPolicy
' ...
Public Property Roles() As DbSet(Of PermissionPolicyRole)
Public Property Users() As DbSet(Of PermissionPolicyUser)
Public Property TypePermissionObjects() As DbSet(Of PermissionPolicyTypePermissionObject)
运行该应用程序,以查看“用户”和“角色”项现在已添加到导航中,为您当前的Windows帐户创建了一个用户,并且将“管理员”角色与其关联。默认情况下,将为运行该应用程序的每个新用户自动添加一个帐户(此行为在调试时很方便)。在生产环境中,可以通过将AuthenticationActiveDirectory.CreateUserAutomatically选项设置为false来禁用自动创建。
为了进行更深入的自定义,您可以处理AuthenticationActiveDirectory.CustomCreateUser事件。例如,您可以自动创建与某个默认角色关联的受限帐户。
另一种现成的身份验证类型是AuthenticationStandard。假定使用内部XAF身份验证,并且用户凭据保存在应用程序的数据库中。要应用此身份验证类型,请从工具箱中拖动相应的项目。
使用标准身份验证,登录过程是交互式的,并且要求用户在启动时提供凭据。在这种情况下,将需要您手动创建预定义的角色和用户。
您还可以实施自定义身份验证过程。请参阅“如何:使用自定义登录参数和身份验证”以查看示例。
在移动应用程序中,在MobileApplication.cs(MobileApplication.vb)文件的SetLogonParametersForUIBuilder方法中指定具有管理权限的现有用户。
protected override void SetLogonParametersForUIBuilder(object logonParameters) {
base.SetLogonParametersForUIBuilder(logonParameters);
((AuthenticationStandardLogonParameters)logonParameters).UserName = "Sam";
((AuthenticationStandardLogonParameters)logonParameters).Password = "";
}
Protected Overrides Sub SetLogonParametersForUIBuilder(ByVal logonParameters As Object)
MyBase.SetLogonParametersForUIBuilder(logonParameters)
CType(logonParameters, AuthenticationStandardLogonParameters).UserName = "Sam"
CType(logonParameters, AuthenticationStandardLogonParameters).Password = ""
End Sub
以下示例演示了自定义身份验证实现。