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

基于令牌的身份认证

对于浏览器,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里使用到许多开源框架和库。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值