用户登录
一个完整的用户登录包括以下步骤:
- 前端显示登录界面
- 前端提交用户登录数据
- 服务端接收用户登录数据
- 服务端校验用户名和密码
- 服务端生成登录凭证并发送登录凭证给客户端
服务端接收用户登录数据
需要开发一个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,浏览器会自动接收,无需开发处理。
- 请求头模式:会产生一个【响应头】,此时需要客户端识别并保存,然后在后续请求中使用它。