Код: Выделить всё
[HttpGet]
public IActionResult ExternalLogin(string provider)
{
var redirectUrl = Url.Action(nameof(ExternalLoginCallback), "Account");
var properties = _signInManager.ConfigureExternalAuthenticationProperties(provider, redirectUrl);
return Challenge(properties, provider);
}
[HttpGet]
public async Task ExternalLoginCallback()
{
var info = await _signInManager.GetExternalLoginInfoAsync();
if (info == null)
{
return RedirectToAction(nameof(Login));
}
// Get the external user information
var email = info.Principal.FindFirstValue(ClaimTypes.Email);
var name = info.Principal.FindFirstValue(ClaimTypes.Name);
var provider = info.LoginProvider;
// Check if the user already exists
var user = await _userService.GetUserByEmailAsync(email);
if (user == null)
{
// Create a new user
user = new User { Name = name, Email = email, IsActive = true, PasswordHash = "" };
if(provider == "Google")
{
user.IsGoogleSignup = true;
}
else if(provider == "Facebook")
{
user.IsFacebookSignup = true;
}
await _userService.CreateUserAsync(user);
}
var token = _userService.GenerateJwtToken(user);
var cookieOptions = new CookieOptions
{
HttpOnly = true,
SameSite = SameSiteMode.Strict,
};
Response.Cookies.Append("AuthToken", token, cookieOptions);
return RedirectToAction("Index", "Home");
}
Код: Выделить всё
[Route("[controller]/[action]")]
[Authorize]
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
но при использовании Facebook добавляется "#=" в конец моего URL-адреса, вызывающий ошибку и попадание, не передается на домашний контроллер
Код: Выделить всё
[Route("[controller]/[action]")]
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
Я видел решения, я Не могу использовать JavaScript, чтобы удалить его, так как моя страница даже не загружается из-за неправильного URL.
Что можно сделать?
Подробнее здесь: https://stackoverflow.com/questions/790 ... -attribute
Мобильная версия