The contract is worth $10 million total, a source told ESPN.com's Pierre LeBrun.
The 27-year-old from Denmark had 10 goals and 17 assists in 47 games for Vancouver last season.
Hansen has 50 goals and 81 assists in 318 career games, all of them with the Canucks. He was selected by Vancouver in the seventh round of the 2004 draft.
He has also appeared in 58 career playoff games, with five goals and nine assists.
Information from The Associated Press was used in this report.