对于一个项目,我正在运行一个.NET API服务器,,客户端是一个角度应用程序。
当有用户登录时,客户端应用程序可以执行所有CRUD操作,当没有用户登录时,它只能执行读取操作。
首先,我将授权装饰器放在只有登录用户才能访问的端点上。
但这意味着任何知道端点urls的人都可以访问该信息。这不是一个很好的做法,所以如果没有用户登录,我希望用我的请求发送一个客户端令牌,因此在我的API服务器上,我可以在我的端点上正确地响应。
我可以在邮递员中这样做,方法是按照以下方式配置我的新令牌:
然后使用令牌对API执行读取操作。
但我无法以角度再现这一现象。到目前为止,这是我的代码:
`
getToken() {
const headers = new HttpHeaders();
headers.set('Authorization', `Basic client:secret`);
headers.set("Content-Type", "application/json");
const requestOptions = { headers: headers };
let body = {
"grant_type": "client_credentials",
"client_id": "client",
"client_secret": "secret",
"scopes": "api",
"response_type": "id_token token"
}
this.http.post("https://localhost:5001/connect/token", body, requestOptions).subscribe( result => {
console.log(result);
})
}‘我尝试了无数的变体,但是我一直得到一个状态代码400错误:“invalid_request”
发布于 2022-12-03 17:03:30
当您从JavaScript发出请求时,还需要正确配置CORS。邮递员不需要CORS,但是浏览器需要。
我将使用像https://www.telerik.com/fiddler这样的工具查看失败的请求和响应。
另外,也许在您的请求中发布一个示例响应?
我还会在IdentityServer中查看日志,以了解请求失败的原因。
https://stackoverflow.com/questions/74655611
复制相似问题