[英]Google authentication with C# ASP.NET Core Web API
問題:如何使用 ASP.NET Core 后端 API 通過 google 身份驗證注冊或登錄用戶?
我有一個帶有 react.js 的前端並且工作正常但我不知道如何處理我的后端服務器。 在我看來,Google 文檔很難理解。 在網上我找不到與我的情況類似的例子。 我只能找到使用 ASP.NET Core MVC 標識的示例,但這不是我的情況。
const res = await fetch('/api/user/google-login', {
method: 'POST',
body: JSON.stringify({
token: response.credential,
}),
headers: {
'Content-Type': 'application/json',
},
});
我的前端將憑據發送到我的后端服務器,但之后我不知道該怎么做。
有人有這種情況的例子或者有人知道可以做什么嗎?
[HttpPost]
[Route("/google-login")]
public async Task<IActionResult> GoogleLogin([FromHeader] string token)
{
// what to do here..?
}
我相信會有更好的方法解決這個問題,但這就是我現在解決它的方法。 我使用 GoogleJsonWebSignature 來檢索外部用戶 ID。 每次身份驗證時,它都會檢查用戶是否存在於系統中,如果用戶尚未注冊,則用戶將被注冊。我的代碼如下。
[HttpPost]
[Route("/api/user/google-login")]
public async Task<ActionResult> GoogleLogin([FromHeader] string token)
{
await _userService.Authenticate(token);
return Ok();
}
public async Task<bool> Authenticate (string idToken)
{
var payload = await GetGooglePayload(idToken);
if(! await UserExistsByExternalId(payload.Subject))
{
Register(payload.Subject);
}
return true;
}
public async Task<GoogleJsonWebSignature.Payload> GetGooglePayload(string idToken)
{
//Will throw a InvalidJwtException if the passed value is not valid JWT
GoogleJsonWebSignature.Payload validPayload = await GoogleJsonWebSignature.ValidateAsync(idToken);
return validPayload;
}
public void Register(string externalId)
{
User newUser = new User(externalId);
_userRepository.Register(newUser);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.