Я пытаюсь вызвать конечную точку refreshToken из углового 8-го клиента, и она, похоже, не срабатывает.Кто-нибудь может заметить проблему.Я даже пытался сопоставить регистр параметров, но это не имело значения.Я подтвердил, что this.refreshLoginUrl является правильным.Это связано с последовательностью параметров отправки или любым другим несоответствием
на стороне клиента
getRefreshLoginEndpoint<T>(): Observable<T> {
let header = new HttpHeaders({ 'Content-Type': 'application/x-www-form-urlencoded' });
let params = new HttpParams()
.append('refreshtoken', this.authService.refreshToken)
.append('accesstoken', this.authService.accessToken)
.append('username', this.authService.currentUser.userName)
.append('userid', this.authService.currentUser.id)
//.append('grant_type', 'refresh_token')
//.append('scope', 'openid email phone profile offline_access roles')
//.append('resource', window.location.origin);
let requestBody = params.toString();
return this.http.post<T>(this.refreshLoginUrl, requestBody, { headers: header })
.pipe(catchError(error => {
return this.handleError(error, () => this.getRefreshLoginEndpoint());
}));
}
serverside
public class RefreshTokenModel
{
public int UserID { get; set; }
public string UserName { get; set; }
public string AccessToken { get; set; }
public string RefreshToken { get; set; }
}
[AllowAnonymous]
[HttpPost("token/refresh")]
[Produces("application/json")]
public async Task<IActionResult> RefreshToken(RefreshTokenModel model)
{
if (!ModelState.IsValid)
{
return BadRequest(new OpenIdConnectResponse
{
Error = OpenIdConnectConstants.Errors.InvalidGrant,
ErrorDescription = "Invalid request data"
});
}
var token = await _identityService.RefreshToken(model);
if (token == null)
{
return BadRequest(new OpenIdConnectResponse
{
Error = OpenIdConnectConstants.Errors.InvalidGrant,
ErrorDescription = "Please check that your credentials are correct"
});
}
return Ok(token);
}