Как сделать правильную авторизацию на Vue.js?
В плане безопасности и токен, и куки равны. Под безопасностью имею ввиду сложность взлома.

Можно выделить несколько основных отличий:
1. Куки - хранятся на сервере и на клиенте, токен - хранится на клиенте
2. Куки привязываются к домену, который авторизовался, а токен нет  - это даёт большую гибкость, и она становится необходимостью при разработке распределённых систем. 
3. Токен можно использовать выборочно на запросах, а куки на всех запросах. В случае с куки, это может привести к XSRF атакам, т.к. после авторизации, все запросы будут считаться авторизованными.  Например, ты авторизовался на сайте site.com, я отправил тебе письмо с таким тегом:  <img src="https://site.com/money?money=200&to=me /> . В результате мне перечислит 200 единиц, т.к. после авторизации с куки, все запросы считаются авторизованными и запрос https://site.com/money?money=200&to=me отработает. Способы защититься от таких атак существуют.

В последние пару лет токены стали чаще использовать, по трём причинам:
1. Они stateless, что больше соотвествуют SPA (angular, vue, react) - один из моментов SPA в том, что состояние клиента находится на клиенте. 
2. Гибкость, т.к. токены не привязаны к одному домену
3. Они набрали популярность))

За последние два года лично мне не попадалось проектов с куки-авторизацией, стек .net + angular/react

https://dev.to/spukas/authentication-cookies-vs-to...
https://stackoverflow.com/questions/17000835/token...
https://www.linkedin.com/pulse/cookie-vs-token-aut...
Если совсем уж безопасно, то нужно 2 токена , один основной а другой рефреш который обновится с каким то интервалом.