public async Task UpdateUserConnection(string token, string connectionId) { var userId = JwtDecoder.GetUserIdFromToken(token); var user = await _context.Users.Include(u => u.Connection).FirstOrDefaultAsync(usr => usr.Id == userId); if (user == null) { return; } if (user.Connection != null) { user.Connection.ConnectionId = connectionId; _context.UserConnections.Update(user.Connection); } else { user.Connection = new UserConnection() { ConnectionId = connectionId }; } await _context.SaveChangesAsync(); }
//protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, // CancellationToken cancellationToken) //{ // HttpResponseMessage errorResponse = null; // try // { // IEnumerable<string> authHeaderValues; // request.Headers.TryGetValues("Authorization", out authHeaderValues); // if (authHeaderValues == null) // return base.SendAsync(request, cancellationToken); // cross fingers // var bearerToken = authHeaderValues.ElementAt(0); // var token = bearerToken.StartsWith("Bearer ") ? bearerToken.Substring(7) : bearerToken; // var secret = WebConfigurationManager.AppSettings.Get("jwtKey"); // Thread.CurrentPrincipal = ValidateToken( // token, // secret, // true // ); // if (HttpContext.Current != null) // { // HttpContext.Current.User = Thread.CurrentPrincipal; // } // } // catch (SignatureVerificationException ex) // { // errorResponse = request.CreateErrorResponse(HttpStatusCode.Unauthorized, ex.Message); // } // catch (Exception ex) // { // errorResponse = request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message); // } // return errorResponse != null // ? Task.FromResult(errorResponse) // : base.SendAsync(request, cancellationToken); //} public static void OnAuthenticateRequest(IOwinContext context) { var requestHeader = context.Request.Headers.Get("Authorization"); if (requestHeader != null) { int userId = Convert.ToInt32(JwtDecoder.GetUserIdFromToken(requestHeader).ToString()); var identity = new GenericIdentity(userId.ToString(), "StakersClubOwinAuthentication"); //context.Authentication.User = new ClaimsPrincipal(identity); var token = requestHeader.StartsWith("Bearer ") ? requestHeader.Substring(7) : requestHeader; var secret = WebConfigurationManager.AppSettings.Get("jwtKey"); Thread.CurrentPrincipal = ValidateToken(token, secret, true); context.Authentication.User = (ClaimsPrincipal)Thread.CurrentPrincipal; //if (HttpContext.Current != null) //{ // HttpContext.Current.User = Thread.CurrentPrincipal; //} } }
public async Task <User> GetByToken(string token) { return(await GetById(JwtDecoder.GetUserIdFromToken(token))); }