商信互联
本主题详细介绍从创建和初始化WinApplication对象到最终用户向应用程序认证为止执行的步骤。XAF中有两种内置的身份验证策略。该AuthenticationStandard验证最终用户在登录窗口中输入的信息。该AuthenticationActiveDirectory不需要登录窗口中显示。它从系统的活动目录中获取所需的信息。本主题详细说明使用内置的AuthenticationActiveDirectory策略时如何对最终用户进行身份验证。您可以自定义AuthenticationActiveDirectory,以便显示登录窗口,并将在其中键入的信息用于身份验证。在这种情况下,请阅读Windows Forms Applications中的没有登录窗口的用户身份验证主题,以了解登录窗口的显示方式。
阶段说明 | 干预方式 |
---|---|
为了开始认证过程,创建一个对象空间以检查在应用程序数据库中是否存在定义用户请求认证的记录。在访问数据库之前,请检查数据库中模块版本及其实际版本的兼容性。如果数据库中的版本大于实际版本,则会引发异常,这要求您增加应用程序的版本。如果较低,则引发XafApplication.DatabaseVersionMismatch事件。默认情况下,此事件在XAF解决方案中处理。事件处理程序调用数据库更新程序的更新方法,将数据库更新为所需版本。但是,当应用程序在调试模式下运行时,将调用此方法。在发布模式下,会引发异常(您可以在应用程序中看到整个代码)。 | 在开始身份验证过程之前,您可以访问由登录用户修改的LogonParameters对象。为此,请处理XafApplication.LoggingOn事件。 您可以执行检查数据库和应用程序兼容性的自定义过程。为此,请处理XafApplication.CustomCheckCompatibility事件。在这种情况下,您还应该在此代码中引发XafApplication.DatabaseVersionMismatch事件,以便在需要时更新数据库。 如果不需要在应用程序中自动生成的XafApplication.DatabaseVersionMismatch事件处理程序中实现的方案,请编写一个自定义事件处理程序。例如,您可以实现一个自定义DatabaseUpdater类,并在DatabaseVersionMismatch事件处理程序中调用其Update方法。 使用XafApplication.DatabaseUpdateMode属性设置更新数据库机制所需的行为。例如,您可以设置UpdateDatabaseAlways值,以便在每次运行应用程序时更新数据库的版本。这在使用VB编写的应用程序中很有用,因为在VB项目中难以增加版本。 |
使用AuthenticationActiveDirectory策略时,启动应用程序后立即完成身份验证。如果已在系统中找到其帐户,并且该数据库中存在相应的对象,则对用户进行身份验证。 | 如果内置的Authentication类执行的默认身份验证不满足您的要求,请实施一个自定义类。例如,从内置身份验证类之一继承:AuthenticationStandard或AuthenticationActiveDirectory。或者,从基AuthenticationBase类继承。在您的类中,重写Authenticate方法。它返回通过登录的最终用户指定的凭据在数据库中找到的用户对象。要查看示例,请参阅“如何:使用自定义登录参数和身份验证”主题。 |
创建具有最终用户自定义的应用程序模型层,该层存储在Model.User.xafml文件中。此文件将最终用户自定义存储到应用程序,该自定义是在上一个应用程序运行期间创建的。 | 要在登录过程完成后执行自定义操作,请处理XafApplication.LoggedOn事件。 |