Hasani made his professional debut for Vllaznia Shkodër on 17 April 2009 against Skënderbeu Korçë, replacing Ansi Nika in the 75th minute. Hasani made his European debut for Vllaznia Shkodër in a Europa League qualifying match against Birkirkara on 30 July 2011, coming on as an 88th-minute substitute in the 1–0 win. He played another five minutes in the returning leg where Vllaznia Shkodër progressed with the aggregate 2–1. Hasani would play another two matches as a late substitute in the next round against Thun in an eventual 2–1 aggregate exit.
Hasani returned to Albania in the summer of 2014 and signed a one-year contract with Kukësi on 29 July 2014, with the option of an extension of a further two years. On 25 August 2014, Hasani made his Kukësi debut in the team's opening league match of 2014–15 Albanian Superliga against his former side Vllaznia Shkodër, playing 88 minutes in a 2–1 away win. In the next matchday he made his home debut by helping his side to beat the newcomers of Elbasani. Hasani scored his maiden goal for Kukësi on 19 November 2014 during the 5–2 home win against Pogradeci in the first leg of 2014–15 Albanian Cup's second round. He ended his first season with Kukësi by playing 26 league matches, mostly of them as a starter, and 7 cup matches, with Kukësi who finished as runner-up in both league and cup. In the Albanian Cup final against Laçi on 29 May 2015, he scored his second cup goal and the temporary equalizer in an eventual 2–1 loss. Hasani made his 100th Albanian Superliga appearance on 5 March 2017 in the 1–1 draw at Flamurtari Vlorë where he played for 84 minutes. Later that month, Hasani announced his departure from the club. He terminated the contract after falling out with Kukësi management. Kukësi finished 2016–17 season by winning their first ever championship.
Return to Vllaznia Shkodër
On 29 July 2017, after weeks of negotiations, Hasani officially returned to his boyhood club by signing a two-year contract. He was handed squad number 10, and made his return debut on 10 September against newbie Lushnja, scoring a tap-in in an eventual 2–0 away win. Hasani left a struggling Vllaznia in December 2017 after receiving an offer from Sepahan.
Sepahan
On 19 December 2017, Hasani moved for the first time outside continent to join Sepahan on a one-and-a-half year contract.
Tirana
On 23 July 2018, Hasani returned in Albania where he joined Tirana by penning a contract until June 2020. He concluded his first season at Tirana by scoring an impressive 12 goals in 32 league appearances, his personal best, being just one goal short of the Albanian Superliga Golden Boot winner. Tirana retained their top flight status only in the last matchday, winning 3–0 at home versus Flamurtari Vlorë, with Hasani scoring the third goal of his side. On 19 July 2019, during the summer training camp in Ohër, North Macedonia, Hasani was involved in a confrontation with his new teammate Agustín Torassa; after some strong language, the players were separated by the rest of the squad after the conflict started to go physical. The midfielder left the training ground and immediately asked for a transfer request. The following day, Hasani was suspended by Tirana.