用户登录

一个完整的用户登录包括以下步骤:

  1. 前端显示登录界面
  2. 前端提交用户登录数据
  3. 服务端接收用户登录数据
  4. 服务端校验用户名和密码
  5. 服务端生成登录凭证并发送登录凭证给客户端



服务端接收用户登录数据

需要开发一个Action,例如:

[LoginAction]
[HttpPost]
[Route("login.aspx")]
public string Login([FromForm]string userId, [FromForm]string password, [FromForm]string tenantId)

说明:

  • 本示例使用 表单 数据格式
  • 也可以用JSON方式提交



生成登录凭证并发送登录凭证给客户端

在生成登录凭证之前,我们需要创建一个用户信息对象来保存当前用户相关信息。
然后用这个用户对象生成 JWT Token,也就是登录凭证。
示例代码如下:

// 创建用户信息对象
IUserInfo userInfo = new WebUserInfo {
    TenantId = tenantId,
    UserId = userId,
    UserName = "Fish Li",
    UserRole = "Admin"
};

// 定义凭证过期时间
int seconds = 1200;

// 生成登录凭证并发送登录凭证给客户端
AuthenticationManager.Login(userInfo, seconds);

AuthenticationManager.Login方法内部有2个过程

  • 先生成登录凭证
  • 以COOKIE形式发送登录凭证给客户端



单独生成登录凭证

如果仅仅需要生成登录凭证,可以参考下面代码:

IUserInfo userInfo = new WebUserInfo {
    TenantId = tenantId,
    UserId = userId,
    UserName = "Fish Li",
    UserRole = "Admin"
};

int seconds = 1200;
string token = AuthenticationManager.GetLoginToken(userInfo, seconds);



用户信息对象

Nebula中定义了 IUserInfo 接口用来表示用户信息,
同时提供了2个实现类可供使用:

  • WebUserInfo
  • AppClientInfo

如果不满足需求,请自行实现接口。



登录凭证续期

Nebula支持2种方式从前端到服务端传递登录凭证:

  • Cookie模式
  • 请求头模式

无论采用哪种模式,都可以支持登录凭证续期:

  • Cookie模式:会产生一个新的Cookie,浏览器会自动接收,无需开发处理。
  • 请求头模式:会产生一个【响应头】,此时需要客户端识别并保存,然后在后续请求中使用它。