public TokenModel Token([FromBody] TokenInModel model) { var set = Setting.Current; // 密码模式 if (model.grant_type == "password") { var app = _service.Authorize(model.UserName, model.Password, set.AutoRegister); // 更新应用信息 app.LastLogin = DateTime.Now; app.LastIP = HttpContext.GetUserHost(); app.SaveAsync(); app.WriteHistory("Authorize", true, model.UserName); return(_service.IssueToken(app, set)); } // 刷新令牌 else if (model.grant_type == "refresh_token") { var app = _service.DecodeToken(model.refresh_token, set); app.WriteHistory("RefreshToken", true, model.refresh_token); return(_service.IssueToken(app, set)); } else { throw new NotSupportedException($"未支持 grant_type={model.grant_type}"); } }
public async void Token_password() { var model = new TokenInModel { grant_type = "password", UserName = "******", }; var client = _server.CreateClient(); var rs = await client.GetAsync <TokenModel>("oauth/token", model); Assert.NotNull(rs); Assert.NotEmpty(rs.AccessToken); Assert.NotEmpty(rs.RefreshToken); Assert.Equal(7200, rs.ExpireIn); Assert.Equal("JWT", rs.TokenType); }
public async void Token_refresh_token() { var client = _server.CreateClient(); var refresh_token = ""; { var model = new TokenInModel { grant_type = "refresh_token", UserName = "******", }; var rs = await client.GetAsync <TokenModel>("oauth/token", model); Assert.NotNull(rs); Assert.NotEmpty(rs.RefreshToken); refresh_token = rs.RefreshToken; } // 刷新令牌 { var model2 = new TokenInModel { grant_type = "refresh_token", refresh_token = refresh_token, }; var rs2 = await client.GetAsync <TokenModel>("oauth/token", model2); Assert.NotNull(rs2); Assert.NotEmpty(rs2.AccessToken); Assert.NotEmpty(rs2.RefreshToken); Assert.Equal(7200, rs2.ExpireIn); Assert.Equal("JWT", rs2.TokenType); } }