Nato il 7 gennaio 1987 a San Giovanni Bianco, in provincia di Bergamo, Astori mosse i suoi primi passi da calciatore nel Ponte San Pietro, prima di essere aggregato alla primavera del Milan, dove gioca fino alla stagione 2005/2006. L'anno successivo, la formazione rossonera lo cede in prestito al Pizzighettone, in Serie C1, dove disputa 27 partite tra regular season e Playout, trovando il primo gol nella sconfitta per 2-1 di Monza, datata 13 maggio 2007. L'anno successivo torna alla base rossonera, ma viene rigirato in prestito alla Cremonese. Con 33 presenze, sfiora la promozione in Serie B, ma perde la finale Playoff contro il Cittadella, non giocando la semifinale d'andata con il Foggia e la finale di ritorno contro i veneti. A fine stagione, passa per 1 milione e 200 mila euro al Cagliari, con cui giocherà per sei stagioni. Esordisce in Serie A il 14 settembre 2008 nella partita persa contro il Siena al Franchi per 2-0. In totale, in Sardegna, colleziona 179 presenze, mettendo a segno 3 gol, due nella stagione 2009/2010, contro Fiorentina e Chievo, e uno il 7 aprile 2012 contro l'Inter. Nel 2014/2015, si trasferisce alla Roma, disputando 30 partite e segnando il gol vittoria della squadra giallorossa nella trasferta di Udine del 6 gennaio 2015. Infine, il trasferimento alla Fiorentina il 4 agosto 2015. Con la formazione viola, prima della morte, ha disputato 109 partite, realizzando 3 reti. In programma era anche il rinnovo di contratto per quello che, dopo l'addio di Gonzalo Rodriguez, era diventato il capitano della società.
Con l'Italia ha disputato 4 partite con l'Under 18, fino ad arrivare alla prima convocazione con la Nazionale maggiore il 6 agosto 2010, chiamato da Cesare Prandelli. Il suo esordio, però, è datato 29 marzo 2011 in Ucraina-Italia, in cui rimedia anche un espulsione per somma di ammonizioni. Dopo aver sfiorato la convocazione per gli Europei del 2012, l'anno successivo partecipa alla Confederations Cup, con cui vince il bronzo decidendo la finale per il terzo posto del 30 giugno 2013 con un suo gol, il primo di un giocatore del Cagliari dopo 40 anni: l'ultimo era stato messo a segno nel 1973 da Gigi Riva. In totale, con la Nazionale azzurra, raccoglie 14 presenze ed una rete.