1.2 ABPZero - 安装

1.2.1 从模板创建

使用ABP和module-zero开始一个新项目最简单的方式是使用启动模板arrow-up-right。详细了解请参考启动模板文档

1.2.2 手动安装

如果你有一个预先创建的应用程序,稍后再安装module-zero,您可以按照本部分的说明。

在本文中,我将假定您的解决方案具有以下项目:

  • AbpZeroSample.Core

  • AbpZeroSample.Application

  • AbpZeroSample.EntityFramework

  • AbpZeroSample.Web

  • AbpZeroSample.WebApi

1.2.3 核心(领域)层

安装Abp.Zero的NuGet包到时Core工程。然后进入到核心模块类(在此示例中为AbpZeroSampleCoreModule类),并添加DependsOn属性AbpZeroCoreModule如下图所示:

[DependsOn(typeof(AbpZeroCoreModule))]
public class AbpZeroSampleCoreModule : AbpModule
{
    public override void Initialize()
    {
        IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
    }
}

1.2.4 领域类(实体)

Module-zero提供了 User,Role和Tenant 类的抽象。所以,我们应该实现它们,如下所示:

你可以在这里添加自定义属性。通过这种方式,我们可以根据我们的需要扩展基用户,角色和租户类。

1.2.5 管理类(领域服务)

我们应该先实现管理基类和存储基类,因为他们是抽象的。

从启动用户存储和用户管理开始:

别担心依赖列表。他们可能会在下一个版本改变。如果需要的话只是组织构造函数。角色存储和角色管理也类似:

最后,我们要创建一个类租户管理类(这里没有租户存储):

最后是功能值存储类以及版本管理类:

1.2.6 权限检查器

为了使授权系统工作,我们应该实现权限检查器:

1.2.7 基础设施层

1. Entity Framework

如果您选择Entity Framework,我们应该配置它以便使用module-zero。安装Abp.Zero.EntityFramework的NuGet包到EntityFramework项目。然后进入到模块文件(此示例中为AbpZeroSampleDataModule)和改变AbpEntityFrameworkModule依赖到AbpZeroEntityFrameworkModule如下图所示:

2. DbContext

转到您的DbContext类,并改变基类AbpDbContext为AbpZeroDbContext;如下所示:

从而,module-zero里的基础实体被添加到你的数据库环境中。

3. 数据库迁移

现在,我们应该创建数据库迁移,因为我们的数据库上下文被更改了。打开包管理器控制台,然后键入以下命令:

当然,你可以选择不同的迁移名称。不要忘了在包管理器控制台中选择默认工程为AbpZeroSample.EntityFramework(对于你的例子AbpZeroSample将是不同的)。执行这个命令之后,一个新的迁移文件被添加到工程中。检查它,如果你需要可以改变它。然后键入以下命令来更新数据库模式:

您可以检查EntityFramework的代码优先迁移文档以获取更多信息。

4. 初始化数据

如果你检查你的数据库,你会看到表已经被创建,但它们是空的。您可以使用EntityFramework的播种以填补初始数据。您可以使用这样的类作为初始数据生成器:

该类创建默认租户,角色和用户。我们可以用它在EF的配置类中初始化我们的数据库数据:

在这里,我们禁用数据过滤器(所以我们可以自由地操纵数据库),并使用的初始数据生成器类。

1.2.8 表示层

1. NuGet包

添加以下的NuGet包到.Web工程:

  • Abp.Zero.EntityFramework(这也将增加Abp.Zero和所有的依赖)

  • Microsoft.AspNet.Identity.Owin

  • Microsoft.Owin.Host.SystemWeb

2. Owin启动类

添加这样一个Owin启动类:

3. 账户控制器

我们可以创建一个控制器用于登录/注销,如下所示:

附一个简单的LoginViewModel:

1.2.9 登录视图

为了能够使用的AccountController,我们应该创建一个登录页面。这由你决定创建一个登录表单。只需通过AJAX使用适当的参数调用AccountController.Login。

1. 确保应用程序安全

现在,我们可以添加一个AbpAuthorize特性到HomeController,以确保只有合法的用户才能进入到页面:

Last updated