public async Task <IActionResult> FBLogin(string accessToken) { var user = _userService.FBLogin(accessToken); if (user == null) { return(Unauthorized()); } var getToken = TokenMan.GenToken(user, _jwtsetting, _jwtsetting.Expire); var getRefreshToken = TokenMan.GenToken(user, _jwtsetting, _jwtsetting.LongExpire); var result = _usersTokenService.SaveToken(user.Id, getToken.tokenString, getRefreshToken.tokenString, getToken.expireTo, getRefreshToken.expireTo); if (!result) { return(StatusCode(StatusCodes.Status500InternalServerError)); } Response.Cookies.Append("jwt_token", JsonConvert.SerializeObject(new { access_token = getToken.tokenString, refresh_token = getRefreshToken.tokenString }), new CookieOptions() { Expires = DateTime.Now.AddMinutes(_jwtsetting.LongExpire), HttpOnly = true, Path = "/" }); return(await Task.FromResult(Ok())); }
public async Task <IActionResult> RefreshToken() { var jwtToken = Request.Cookies["jwt_token"]; if (jwtToken == null) { return(Unauthorized()); } var json = JsonConvert.DeserializeObject <dynamic>(jwtToken); string accessToken = Convert.ToString(json.access_token); string refreshToken = Convert.ToString(json.refresh_token); var usersid = _usersTokenService.CheckRefreshToken(accessToken, refreshToken); if (usersid == 0) { return(Unauthorized()); } var user = _userService.GetById(usersid.Value); //如果存在,重新產生出jwtToken var getToken = TokenMan.GenToken(user, _jwtsetting, _jwtsetting.Expire); var getRefreshToken = TokenMan.GenToken(user, _jwtsetting, _jwtsetting.LongExpire); var result = _usersTokenService.UpdateToken(user.Id, getToken.tokenString, getRefreshToken.tokenString, getToken.expireTo, getRefreshToken.expireTo); if (!result) { return(StatusCode(StatusCodes.Status500InternalServerError)); } Response.Cookies.Append("jwt_token", JsonConvert.SerializeObject(new { access_token = getToken.tokenString, refresh_token = getRefreshToken.tokenString }), new CookieOptions() { Expires = DateTime.Now.AddMinutes(_jwtsetting.LongExpire), HttpOnly = true, Path = "/" }); return(await Task.FromResult(Ok())); }