ASP.NET ZERO 学习 —— (8) 开发手册之基于令牌的身份认证&其他
2017-03-01 15:25
615 查看
基于令牌的身份认证
对于浏览器,ASP.NET Zero 使用基于Cookie的身份认证,但是,如果在移动应用程序中使用Web API或应用服务(通过动态Web API公开),可能需要基于令牌的身份认证机制。ASP.NET Zero中包含令牌身份认证基础架构。在.WebApi项目中的AccountController 有一个Authenticate 动作,用于获取令牌,然后你就可以在后续请求中使用该令牌。这里,Postman(Chrome 扩展)将用于演示请求和相应信息。
身份认证
如下图所示,向 http://localhost:6234/api/Account/Authenticate 发送一个Context-Type=”application/json”的POST请求我们发送了一个Json的请求,消息体中包含tenancyName, userNameOrEmailAddress 和 password。tenancyName不会被用来作为管理员用户的身份认证。如上所示,返回JSON里的result属性包含了令牌,你可以保存或者在后续请求中使用。
使用API
你可以用验证后得到的令牌调用任何需要授权的行为。所有的应用服务都可以远程调用。举个栗子,你可以使用User Service来获取用户列表:只需要发出一个包含Content-Type=”application/json”*和Authorization=”Bearer your-auth-token”的POST请求到http://localhost:6234/api/services/app/user/GetUsers*,请求的body为空。当然,请求和响应的主体信息会根据调用的API不同而不同。
几乎所有的用户界面也可以通过使用API来操作(因为用户界面也使用相同的Web API)。
SWAGGER UI
ASP.NET Zero 已经集成了 Swagger UI。Swagger UI 在WebApi 项目中的 WebApiModule类中进行配置,可以浏览器中打开”/swagger/ui/index”来访问 Swagger UI。单元测试
ASP.NET Zero 启动项目包含了单元测试和集成测试。测试组件使用下列工具开发:- xUnit 作为测试框架
- Shouldly 作为断言库
- Effort Mocking 实体和数据库
- Abp.TestBase 简化了ABP的应用集成测试
测试覆盖了领域层(Core)和应用层。打开测试资源管理器(在VS主菜单的 测试\窗口 下面)运行单元测试。
在ASP.NET Zero 2.2版本里面针对单元测试引入了一个叫 MultiTenancyEnabled
的配置项。如果在你领域层中没有启用多租户,那么你还需要在单元测试项目的
app.config中将该设置改为false,这样,多租户的测试将不会执行。因为一些单元测试(租户创建,版本创建等)只适用于多租户概念。
这些单元测试可以帮助你理解代码。此外,当你为你的应用层的方法写单元测试时,他们也可以作为一个模板。
所有的单元测试类()都派生于AppTestBase。它为每个测试初始化ABP系统,使用Effort模拟数据库,创建测试数据并且创建日志。它也为一些测试提供了一些常用的方法。
下面是一个应用层的单元测试例子:
public class UserAppService_Delete_Tests : UserAppServiceTestBase { [Fact] public async Task Should_Delete_User() { //Arrange CreateTestUsers(); var user = await GetUserByUserNameOrNullAsync("artdent"); user.ShouldNotBe(null); //Act await UserAppService.DeleteUser(new IdInput<long>(user.Id)); //Assert user = await GetUserByUserNameOrNullAsync("artdent"); user.IsDeleted.ShouldBe(true); } }
它首先创建了一些测试用户,然后检查是否有一个用户名为”artdent”的用户,找到后调用UserAppService的DeleteUser方法(正在测试)。最终,确认这个用户是否被删除。这里,用户是执行的软删除,所以被执行删除后,它的IsDelete属性将变为true。
见该文章了解更多关于单元测试的知识。
使用到的库和框架
在ASP.NET Zero里使用到许多开源框架和库。服务端
- ASP.NET Boilerplate Framework & Module-Zero
- ASP.NET MVC
- ASP.NET Web API
- ASP.NET Identity Framework (and social login extensions)
- ASP.NET Web Optimization Framework
- SignalR
- EntityFramework
- EntityFramework.DynamicFilters
- Castle Windsor
- AutoMapper
- HangFire
- Log4Net
- RecaptchaNet
- xUnit
- Swashbuckle
- StackExchange.Redis
- SharpZipLib
- System.Linq.Dynamic
- EPPlus
客户端
- Metronic Theme
- Twitter Bootstrap
- Bootstrap Hover Dropdown
- Bootstrap Date Range Picker
- Bootstrap Switch
- Bootstrap Select
- AngularJs
- Angular UI-Bootstrap
- Angular UI-Router
- Angular UI-Utils
- Angular UI-Grid
- Angular File Upload
- Angular Date Range Picker
- Angular ocLazyLoad
- Angular Moment
- Angular Bootstrap Switch
- jQuery
- jQuery UI
- jQuery BlockUI
- jQuery Slimscroll
- jQuery Sparkline
- jQuery Uniform
- jQuery Validation
- jQuery jTable
- jQuery Ajax Forms
- Js Cookie
- Modernizr
- Moment.js
- Moment.js Timezone
- Underscore.js
- JsTree
- Morris
- Respondjs
- Font-Awesome
- Simple Line Icons
- SpinJs
- SweetAlert
- Toastr
相关文章推荐
- ASP.NET ZERO 学习 —— (4) 开发手册之AccountController
- ASP.NET ZERO 学习 —— (5) 开发手册之ANGULAR后台单页面应用
- ASP.NET ZERO 学习 —— (3) 开发手册之介绍和MVC 应用前端
- ASP.NET ZERO 学习 —— (7) 开发手册之基础架构
- ASP.NET ZERO 学习 —— (10) 应用开发Demo之创建实体对象
- ASP.NET ZERO 学习 —— (16) 应用开发Demo之删除用户
- ASP.NET ZERO 学习 —— (13) 应用开发Demo之页面呈现Person数据
- ASP.Net学习笔记004--基于ashx方式的ASP.Net开发1
- 基于.Net Framework 4.0 Web API开发(4):ASP.NET Web APIs 基于令牌TOKEN验证的实现
- ASP.NET ZERO 学习 —— (18) 应用开发Demo之扩展电话信息
- ASP.NET ZERO 学习 —— (19) 应用开发Demo之多租户
- ASP.NET ZERO 学习 —— (14) 应用开发Demo之新建People
- 基于Bootstrap和Knockout.js的ASP.NET MVC开发实战 关于 拦截器的 学习 部分
- ASP.NET ZERO 学习 —— (17) 应用开发Demo之筛选
- ASP.NET ZERO 学习 —— (12) 应用开发Demo之测试应用服务
- 基于.Net Framework 4.0 Web API开发(4):ASP.NET Web APIs 基于令牌TOKEN验证的实现
- ASP.NET ZERO 学习 —— (15) 应用开发Demo之授权
- ASP.NET ZERO 学习 —— (11) 应用开发Demo之创建应用服务
- 搭建基于ASP.NET 2.0的DNN 4.X模块开发环境及模块实例(1)
- [导入]C# + ASP.NET开发基于Web的RSS阅读器