ASP.NET ZERO 学习 —— (8) 开发手册之基于令牌的身份认证&其他

来源:互联网 发布:c 代理商系统源码 编辑:程序博客网 时间:2024/05/19 11:45

基于令牌的身份认证

对于浏览器,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”的用户,找到后调用UserAppServiceDeleteUser方法(正在测试)。最终,确认这个用户是否被删除。这里,用户是执行的软删除,所以被执行删除后,它的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

0 0
原创粉丝点击