番外篇--Moddule Zero启动模板
返回总目录:ABP+AdminLTE+Bootstrap Table权限管理系统一期
1.3 ABPZero - 启动模板
1.3.1 简介
使用ABP和moudle-zero开始一个新项目的最简单的方式是在模板页创建模板。记住要勾选 Include module zero。
在创建并且下载模板项目后:
在VS2013+里面打开你的项目
选择 Web项目 作为启动项目。
打开包管理器控制台,选择 EntityFramework 项目作为默认项目并且运行 EntityFramework 的 Update-Database 命令。在使用这个命令后,它会创建该项目的数据库。你可以更改连接字符串在web.config文件里面。
运行程序。默认:用户名是 admin 密码是 123qwe。
在这个模板中,多租户模式 默认是开启的。如果你不需要开启,那么你可以在Core项目中禁用它。
1.3.2 社交账号登录
启动模板支持 Facebook,Twitter,Google+ 登录。在web.config文件里面,你可以看到以下配置:
<add key="ExternalAuth.Facebook.IsEnabled" value="false" />
<add key="ExternalAuth.Facebook.AppId" value="" />
<add key="ExternalAuth.Facebook.AppSecret" value="" />
<add key="ExternalAuth.Twitter.IsEnabled" value="false" />
<add key="ExternalAuth.Twitter.ConsumerKey" value="" />
<add key="ExternalAuth.Twitter.ConsumerSecret" value="" />
<add key="ExternalAuth.Google.IsEnabled" value="false" />
<add key="ExternalAuth.Google.ClientId" value="" />
<add key="ExternalAuth.Google.ClientSecret" value="" />
在这里,你可以根据你的需求来决定开启那些配置。当然,你必须从这些相关的网站去获取它的Keys和Passwords。你可以从这些网站找到相关指南来了解怎么获取key。一旦你开启了某个社交网站登录并且输入真实的key,那么你可以在登录界面看到一个按钮。按照相似的方法,你可以实现其它的社交登录方式。
1.3.3 基于令牌的身份验证
对于浏览器启动模板使用基于令牌的身份验证。然而,如果你想使用移动应用程序访问Web Api或者应用服务(那些通过动态Web Api暴露的应用服务),那么你可能想要使用基于令牌的身份验证的机制。启动模板包括了不记名令牌验证基础设施。 在 .WebApi 项目中的 AccountController 包含了 Authenticate 的action,用来获取token。这样我们就可以在下一个请求中使用token。
在这里,我们使用 Postman (chrome扩展) 来展示 Requests 和 Reponses。
身份验证
发送一个 带有Context-Type="application/json"请求头的POST 请求到 http://localhost:6334/api/Account/Authenticate,如下所示:

我们发送了一个包含 userNameOrEmailAddress 和 password 的 JSON request body。还有,我们应该把 tenancyName 设置为 tenant 用户。如上所示,返回的JSON对象的 result 属性包含了这个token。我们可以保存并在下个请求中使用它。
使用API
在取得token和身份认证后,我们可以使用该令牌调用任何需要授权的action。对于所有应用服务的远程调用都是有效的。例如:我们可以使用 Tenant Service 来取得租户列表:

模拟一个 带有Context-Type="application/json" 请求头的POST 请求到 http://localhost:6334/api/services/app/tenant/GetTenants 并且 Authorization="Bearer your- auth-token"。请求体是空的 {}。当然,请求体和响应体将会使用不同的APIs。
在UI端的所有操作是有效的,那么对于Web Api操作也是有效的(因为在UI端使用的是相同的Web Api)并且可以很容易的被使用。
1.3.4 使用控制台迁移数据
启动模板包含了一个工具:Migrator.exe,使用这个工具可以轻松的迁移你的数据库。你可以运行这个应用来创建/迁移host和tenant的数据库。

这个应用程序可以从它自己的 .config 文件里面取得host的连接字符串。在开始的地方是与web.confg相同的。确认配置文件里面的连接字符串是你想要连接的数据库。然后获取主机连接字符串。首先创建主机数据库,或者应用迁移如果该数据库已经存在。然后,取得租户的连接字符串并且对这些数据库运行迁移。如果没有专门的数据库那么它会跳过该租户,或者对于那些已迁移租户的数据库也会跳过(多个租户之间共享数据库)。
你可以在开发或者生产环境中使用这个工具对数据库迁移部署,而不是使用EF它自己的Migrate.exe(这需要一些必要的配置并且一次运行只能针对单个数据库)。
1.3.5 单元测试
启动模板中包含了测试的基础设施设置,并且有少数几个测试已经被集成到了.Test项目中。你可以检测它们,并可以很容易的写一些类似的测试。事实上,它们是集成测试而不是单元测试,因为它们会使用ABP基础设施测试你的代码(包括数据验证,身份权限认证,以及工作单元等等)。
番外篇--Moddule Zero启动模板的更多相关文章
- 番外篇--Moddule Zero多租户管理
番外篇--Moddule Zero多租户管理 2.1.1 关于多租户 强烈建议阅读这个文件前阅读多租户文档. 2.1.2 启用多租户 ASP.NET Boilerplate和module-zero可以 ...
- 番外篇--Moddule Zero安装
Moddule Zero 安装 1.2.1 从模板创建 使用ABP和module-zero开始一个新项目最简单的方式是使用启动模板.详细了解请参考启动模板文档. 1.2.2 手动安装 如果你有一个预先 ...
- 番外篇--Moddule Zero 版本管理与组织单位管理
Moddule Zero 版本管理 2.2.1 简介 大多数SaaS(多租户)应用都会有多个版本(包),这些版本的功能点也会各不相同.因此,他们能够为他们的租户(客户)提供不同的价格和功能点选项. 关 ...
- 番外篇--Moddule Zero介绍
1.1 ABPZero - 概述 介绍 微软ASP.NET身份框架 权限 会话 角色管理 默认角色 用户管理 多租户 设置管理 审计日志 1.1.1 介绍 Modulde Zero实现了ASP.NET ...
- 渗透测试思路 - CTF(番外篇)
渗透测试思路 Another:影子 (主要记录一下平时渗透的一些小流程和一些小经验) CTF(番外篇) 笔者是一个WEB狗,更多的是做一些WEB类型题目,只能怪笔者太菜,哭~~ 前言 本篇 ...
- 可视化(番外篇)——在Eclipse RCP中玩转OpenGL
最近在看有关Eclipse RCP方面的东西,鉴于Gephi是使用opengl作为绘图引擎,所以,萌生了在Eclipse RCP下添加画布,使用opengl绘图的想法,网上有博文详细介绍这方面的内容, ...
- 可视化(番外篇)——SWT总结
本篇主要介绍如何在SWT下构建一个应用,如何安装SWT Designer并破解已进行SWT的可视化编程,Display以及Shell为何物.有何用,SWT中的常用组件.面板容器以及事件模型等. 1.可 ...
- 番外篇 之 C#委托
对于上一节 番外篇之C#多线程的反思 反思一: Thread th = new Thread(参数); ////参数的总结 ////首先,第一情况,对于 Thread th = new Threa ...
- [uboot] (番外篇)uboot之fdt介绍
http://blog.csdn.net/ooonebook/article/details/53206623 以下例子都以project X项目tiny210(s5pv210平台,armv7架构)为 ...
随机推荐
- hello world 为什么我们看到学习中有这一句话!!!
Hello World ,中文意思:你好,世界.世界上的第一个程序就是Hello World,由Brian Kernighan创作. Hello, world"程序是指在计算机屏幕上输出“H ...
- requests爬取网页的通用框架
概述 代码编写完成时间:2017.12.28 写文章时间:2017.12.29 看完中国大学MOOC上的爬虫教程后,觉得自己之前的学习完全是野蛮生长,决定把之前学的东西再梳理一遍,主要是觉得自己写的程 ...
- Django学习日记03_模型_Fields
创建模型 模型对应工程中的应用,一个工程可能包含很多的应用,通过命令 python manage.py startapp myapp 创建一个叫myapp的应用,django会帮助生成以下目录: po ...
- Oracle PL/SQL Developer集成TFS进行团队脚本文件版本管理
对于传统的使用关系型数据库的大型软件产品,后台数据库的持续开发和维护可能会产生大量的脚本文件,针对这些脚本文件应该怎样比较方便的进行版本管理,以及如何快捷的在团队之间进行权限等协作管理呢?不同的数据库 ...
- 如何实现虚拟机(VirtualBox)中的Ubuntu与Windows XP间的数据共享
环境: 主机是Windows XP系统 虚拟机与Ubuntu的版本分别为: VirtualBox-3.2.12-68302-Win ubuntu-10.10-desktop-i386 前提:已安装Vi ...
- 【JavaScript 】for 循环进化史
ECMAScript 6已经逐渐普及,经过二十多年的改进,很多功能也有了更成熟的语句,比如 for 循环 这篇博客将介绍一下从最初的 for 循环,到 ES6 的 for-of 等四种遍历方法 先定义 ...
- [js高手之路] es6系列教程 - 迭代器,生成器,for...of,entries,values,keys等详解
接着上文[js高手之路] es6系列教程 - 迭代器与生成器详解继续. 在es6中引入了一个新的循环结构for ....of, 主要是用来循环可迭代的对象,那么什么是可迭代的对象呢? 可迭代的对象一般 ...
- 通过!important设置css样式优先级
CSS写在不同的地方有不同的优先级,一般 .css文件中的定义 < 元素style中的属性,但是如果使用!important,则会变得不一样,使用!important的css定义是拥有最高的优先 ...
- ubuntu14.04下部署Tsung
我是在Windows 7下装的虚拟机里部署的Tsung,所以,以下均是在虚拟机下的操作: 1.网络问题必须搞定,见我的另外一篇博文 2.erlang的安装包.Tsung的安装包一一备齐.我用的是tsu ...
- 关于“System.Data.OleDb.OleDbException,外部数据库驱动程序 (1) 中的意外错误。”的解决方案
网站之前运行一直很正常,但有一次用户在导入格式为xls的excel文件,发生了错误,跟踪错误后抛出如下的异常: 错误提示: 未处理System.Data.OleDb.OleDbException HR ...