#### What Will I Learn? - Verify Token - Decode token - A protected route with token - Checking the user who is logged in #### Requirements Write here a bullet list of the requirements for the user in order to follow this tutorial. - node.js - Install Express.js - Install Postman - Basic node.js, javascript es6 - Watch [part1](https://utopian.io/utopian-io/@alfarisi94/consuming-jwt-api-with-mongodb-and-node-js-part-1-setup-jwt-setup-database-create-router-api), [part2](https://utopian.io/utopian-io/@alfarisi94/consuming-jwt-api-with-mongodb-and-node-js-part-2-validate-user-create-token) #### Difficulty - Intermediate ### Protection on route In the previous tutorial [Consuming JWT API with MongoDB and Node.js part-2# User Validation, Create token.](https://utopian.io/utopian-io/@alfarisi94/consuming-jwt-api-with-mongodb-and-node-js-part-2-validate-user-create-token). We have created the validation and successfully created the token. now we will use the token to protect the route. So later all routing that we protect will check token from a user. ***Noted***: We must make the route protection function on the route to be protected. - **Create a protection function** We can use the **use ()** method to create a protection function. as usual, the method use () has 2 parameters. as usual, the method use () has 2 functions. They are **(req, res)**. but I added 1 additional parameter that is next. next is useful for making the decision to continue or cancel access to the route. but I added **1**additional parameter that is **next**. next is useful for making the decision to continue or cancel access to the route. **Example:** <pre> <code> router.use(function(req, res, next){ //get token var token = req.body.token || req.query.token || req.headers['authorization']; //decode token if(token){ jwt.verify(token, app.get('secretKey'), function(err, decode){ if(err){ return res.json({ success: false, message: 'There was a problem during verification' }) }else{ req.decode = decode next(); } }) }else{ return res.status(403).send({ status:false, message: 'Token not available ' }); } }) </code> </pre> - **Get Token** We can retrieve the user token. there are several ways to retrieve user tokens. - <code>req.body.token</code> : With <code>req</code> , We can get token in body and with **token: valueOfToken**.  - <code>req.query.token</code> : With <code>req</code> , We can get token from query parameter and with **token='token'**.  - <code>req.headers['authorization']</code>: With <code>req</code> , We can get token by headers['authorization'] in headers with key **'authorization'**.  and we can create an ***if {} else {}*** to check whether token exists or does not exist. <pre> <code> if(token){ // do something if token available }else{ return res.status(403).send({ status:false, message: 'Token not available ' }); } </code> </pre> If the token is not available we can make a response with the**status (403)**., and give the message <code>message: 'Token not available '</code> - **Decode Token** The generated token contain encrypted data, and to know the encrypted data in the token. We have to *decode* the token by using the **verify ()** method of **JWT.** **Example:** <pre> <code> jwt.verify(token, app.get('secretKey'), function(err, decode){ if(err){ return res.json({ success: false, message: 'There was a problem during verification' }) }else{ req.decode = decode next(); } }) </code> </pre> method verify () has 3 mandatory parameters to decode token. They are : **1. token**: The first parameter is the token to be decoded. **2. secret key:** The second parameter is the secret key that we use when we will generate the token. in this tutorial, we can get it in the <code>app.get ('secretKey')</code>. **3. function(err, decode):** The third parameter is an anonymous function that has two callback parameters. They are **error(err)** and **decode(decode)**. in this tutorial the parameters are <code>(err, decode)</code>. We can check if there is an error **if (err)** and give response in **JSON** <code>return res.json({success: false, message: 'There was a problem during verification'})</code> - *req.decode = decode*: We can save the decode results in <code>req.decoded</code>, and to proceed into the destination route after verification, we add the next **method ().** <br> <br> <br> - **Check expired token** We can check the expiration period of the token in this way: **Example:** <pre> <code> if(decode.exp <= Date.now()/1000){ return res.status(400).send({ status:false, message: 'Token has expired' }) } </code> </pre> We can check by using if (), then add the mathematical operator **<=**. - *decode.exp* : **decode** is the decode of the **verify()** function which we have described above, and **exp** is the expression value in units of a second. - *Date.now()/1000* : This is the method in javascript to get the time. but because of **decode.exp** in a second unit. then we have to change **Date.now()** into second unit with **/ 1000**. Then we can respond in JSON with **status (400)**. <code>return res.status(400).send({status:false,message: 'Token has expired'})</code> - **Checking the user who is logged in** to see the currently logged in user, we need to create a new routing. I will create a new routing that is <code>'/ profile'</code>. **Example:** <pre> <code> router.get('/profile', function(req, res){ res.json(req.decode._doc); }); </code> </pre> We have stored the **decoded** token into **req.decode** <code>(req.decode = decode)</code>. There will be a lot of data stored in **req.decode**. to specify just take the data only, we can use <code>._doc</code>. ### Result We can see the result by running postman, we will see the user data being logged using routing '**/ profile'**.  - **FULL CODE** <pre> <code> router.use(function(req, res, next){ //get token var token = req.body.token || req.query.token || req.headers['authorization']; //decode token if(token){ jwt.verify(token, app.get('secretKey'), function(err, decode){ if(err){ return res.json({ success: false, message: 'There was a problem during verification' }) }else{ req.decode = decode if(decode.exp <= Date.now()/1000){ return res.status(400).send({status:false,message: 'Token has expired'}) } next(); } }) }else{ return res.status(403).send({ status:false, message: 'Token not available ' }); } }) router.get('/profile', function(req, res){ res.json(req.decode._doc); }); </code> </pre> We have verified token, decode token, and route protection with token. We can also retrieve user data. hopefully this tutorial helps you in the field of security and user verification. #### Curriculum - [Setup JWT , Setup Database, Create Router API](https://utopian.io/utopian-io/@alfarisi94/consuming-jwt-api-with-mongodb-and-node-js-part-1-setup-jwt-setup-database-create-router-api) - [Validate User , Create Token](https://utopian.io/utopian-io/@alfarisi94/consuming-jwt-api-with-mongodb-and-node-js-part-2-validate-user-create-token)
author | alfarisi94 | ||||||
---|---|---|---|---|---|---|---|
permlink | 6wymfp-consuming-jwt-api-with-mongodb-and-node-js-part-3-verify-token-decode-token-route-protection | ||||||
category | utopian-io | ||||||
json_metadata | "{"community":"utopian","app":"utopian/1.0.0","format":"markdown","repository":{"id":27193779,"name":"node","full_name":"nodejs/node","html_url":"https://github.com/nodejs/node","fork":false,"owner":{"login":"nodejs"}},"pullRequests":[],"platform":"github","type":"tutorials","tags":["utopian-io","nodejs","jwt","javascript","web"],"users":["alfarisi94"],"links":["https://utopian.io/utopian-io/@alfarisi94/consuming-jwt-api-with-mongodb-and-node-js-part-1-setup-jwt-setup-database-create-router-api","https://utopian.io/utopian-io/@alfarisi94/consuming-jwt-api-with-mongodb-and-node-js-part-2-validate-user-create-token","https://cdn.utopian.io/posts/8d0f6fc87459ff3e92743f1c4a47aa60b852Screenshot_26.png","https://cdn.utopian.io/posts/f54ad58abdcfddb2937eab4faf47282b3b45Screenshot_27.png","https://cdn.utopian.io/posts/280b754eb3e41754b9b2d456bc38cfb62479Screenshot_28.png","https://cdn.utopian.io/posts/96801dd74cc9cde1e1f5f0b9d6391ba36524Screenshot_30.png"],"image":["https://cdn.utopian.io/posts/8d0f6fc87459ff3e92743f1c4a47aa60b852Screenshot_26.png","https://cdn.utopian.io/posts/f54ad58abdcfddb2937eab4faf47282b3b45Screenshot_27.png","https://cdn.utopian.io/posts/280b754eb3e41754b9b2d456bc38cfb62479Screenshot_28.png","https://cdn.utopian.io/posts/96801dd74cc9cde1e1f5f0b9d6391ba36524Screenshot_30.png"],"moderator":{"account":"portugalcoin","time":"2018-05-02T20:23:05.442Z","pending":false,"reviewed":true,"flagged":false},"questions":{"voters":["portugalcoin"],"answers":[{"question_id":"tuts-1","answer_id":"tuts-1-a-2","user":"portugalcoin","influence":60},{"question_id":"tuts-2","answer_id":"tuts-2-a-1","user":"portugalcoin","influence":60},{"question_id":"tuts-3","answer_id":"tuts-3-a-3","user":"portugalcoin","influence":60},{"question_id":"tuts-4","answer_id":"tuts-4-a-1","user":"portugalcoin","influence":60},{"question_id":"tuts-5","answer_id":"tuts-5-a-3","user":"portugalcoin","influence":60},{"question_id":"tuts-6","answer_id":"tuts-6-a-2","user":"portugalcoin","influence":60},{"question_id":"c-1","answer_id":"c-1-a-2","user":"portugalcoin","influence":60},{"question_id":"c-2","answer_id":"c-2-a-3","user":"portugalcoin","influence":60}],"total_influence":0,"most_rated":[{"question_id":"tuts-1","answer_id":"tuts-1-a-2","influence":60,"voters":["portugalcoin"]},{"question_id":"tuts-2","answer_id":"tuts-2-a-1","influence":60,"voters":["portugalcoin"]},{"question_id":"tuts-3","answer_id":"tuts-3-a-3","influence":60,"voters":["portugalcoin"]},{"question_id":"tuts-4","answer_id":"tuts-4-a-1","influence":60,"voters":["portugalcoin"]},{"question_id":"tuts-5","answer_id":"tuts-5-a-3","influence":60,"voters":["portugalcoin"]},{"question_id":"tuts-6","answer_id":"tuts-6-a-2","influence":60,"voters":["portugalcoin"]},{"question_id":"c-1","answer_id":"c-1-a-2","influence":60,"voters":["portugalcoin"]},{"question_id":"c-2","answer_id":"c-2-a-3","influence":60,"voters":["portugalcoin"]}]},"score":63,"total_influence":60,"staff_pick":null,"staff_pick_by":null,"config":{"questions":[{"question":"How many substantial concepts does this tutorial address?","question_id":"tuts-1","answers":[{"answer":"4-5 substantial concepts covered in the tutorial.","answer_id":"tuts-1-a-1","value":10},{"answer":"2-3 substantial concepts covered in the tutorial.","answer_id":"tuts-1-a-2","value":7},{"answer":"1 substantial concept covered in the tutorial.","answer_id":"tuts-1-a-3","value":3},{"answer":"More than 5 substantial concepts covered in the tutorial.","answer_id":"tuts-1-a-4","value":0}]},{"question":"Does the title and the outline of the tutorial properly reflect the content?","question_id":"tuts-2","answers":[{"answer":"Yes, it is very clear.","answer_id":"tuts-2-a-1","value":15},{"answer":"To some extent.","answer_id":"tuts-2-a-2","value":11.5},{"answer":"The title is somewhat misleading and/or the outline is not detailed or informative enough.","answer_id":"tuts-2-a-3","value":4.5},{"answer":"Title and outline are of little or no relevance to the content of the tutorial.","answer_id":"tuts-2-a-4","value":0}]},{"question":"Did the contributor provide supplementary resources, such as code and sample files in the contribution post or a linked GitHub repository?","question_id":"tuts-3","answers":[{"answer":"Yes, exceptional supplementary resources are provided including a relevant github repo/gist.","answer_id":"tuts-3-a-1","value":15},{"answer":"Supplementary resources provided are of high relevance.","answer_id":"tuts-3-a-2","value":12},{"answer":"Contributor provides minimal supplementary resources.","answer_id":"tuts-3-a-3","value":6},{"answer":"No supplementary resources were provided.","answer_id":"tuts-3-a-4","value":0}]},{"question":"Is the tutorial part of a series?","question_id":"tuts-4","answers":[{"answer":"Yes.","answer_id":"tuts-4-a-1","value":10},{"answer":"Yes, but it is the first entry in the series.","answer_id":"tuts-4-a-2","value":7},{"answer":"No, but it works just fine as a stand-alone tutorial.","answer_id":"tuts-4-a-3","value":5},{"answer":"No.","answer_id":"tuts-4-a-4","value":0}]},{"question":"Does the tutorial contain sufficient explanatory visuals?","question_id":"tuts-5","answers":[{"answer":"Yes, the visual components of the post were adequate in quality and quantity.","answer_id":"tuts-5-a-1","value":10},{"answer":"The volume of visual components included was unnecessarily large.","answer_id":"tuts-5-a-2","value":7},{"answer":"The post lacked sufficient visualization to easily learn from the content.","answer_id":"tuts-5-a-3","value":3},{"answer":"No visualization was presented in this contribution.","answer_id":"tuts-5-a-4","value":0}]},{"question":"How unique and/or innovative are the concepts covered in the tutorial?","question_id":"tuts-6","answers":[{"answer":"This was the first time I read about the concepts covered.","answer_id":"tuts-6-a-1","value":10},{"answer":"The concepts covered were innovative and offer some usefulness.","answer_id":"tuts-6-a-2","value":7},{"answer":"I have read several similar ideas and thoughts elsewhere, but this one was of higher quality.","answer_id":"tuts-6-a-3","value":5},{"answer":"Such tutorials can be found online with great ease and the contribution add no value to the open source community.","answer_id":"tuts-6-a-4","value":0}]},{"question":"How would you describe the formatting, language and overall presentation of the post?","question_id":"c-1","answers":[{"answer":"The post is of very high quality.","answer_id":"c-1-a-1","value":10},{"answer":"The post is of decent quality, but not spectacular in any way.","answer_id":"c-1-a-2","value":7},{"answer":"The post is poorly written and/or formatted, but readable.","answer_id":"c-1-a-3","value":3},{"answer":"The post is really hard to read and the content is barely understandable.","answer_id":"c-1-a-4","value":0}]},{"question":"How would you rate the overall value of this contribution on the open source community and ecosystem?","question_id":"c-2","answers":[{"answer":"This contribution brings great and impactful value, and can be used for applications outside the specific project.","answer_id":"c-2-a-1","value":20},{"answer":"This contribution adds significant value to the open source community and ecosystem, or is of critical importance to the specific project.","answer_id":"c-2-a-2","value":16},{"answer":"This contribution adds some value to the open source community and ecosystem or is only valuable to the specific project.","answer_id":"c-2-a-3","value":8},{"answer":"This contribution adds no value to the open source community and ecosystem or the specific project.","answer_id":"c-2-a-4","value":0}]}]}}" | ||||||
created | 2018-05-02 16:25:30 | ||||||
last_update | 2018-05-03 16:06:03 | ||||||
depth | 0 | ||||||
children | 6 | ||||||
last_payout | 2018-05-09 16:25:30 | ||||||
cashout_time | 1969-12-31 23:59:59 | ||||||
total_payout_value | 50.570 HBD | ||||||
curator_payout_value | 19.028 HBD | ||||||
pending_payout_value | 0.000 HBD | ||||||
promoted | 0.000 HBD | ||||||
body_length | 7,636 | ||||||
author_reputation | 5,678,893,550,406 | ||||||
root_title | "Consuming JWT API with MongoDB and Node.js part-3# Verify Token, Decode Token , Route Protection" | ||||||
beneficiaries |
| ||||||
max_accepted_payout | 1,000,000.000 HBD | ||||||
percent_hbd | 10,000 | ||||||
post_id | 53,472,555 | ||||||
net_rshares | 14,020,854,916,457 | ||||||
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
ubg | 0 | 605,861,512 | 1% | ||
minersean | 0 | 395,411,364 | 50% | ||
dyancuex | 0 | 1,022,690,873 | 50% | ||
michelios | 0 | 53,785,933,646 | 30% | ||
cryptophunk | 0 | 282,322,791 | 50% | ||
toninux | 0 | 593,802,988 | 50% | ||
jdc | 0 | 935,565,576 | 20% | ||
bargolis | 0 | 717,472,997 | 5% | ||
mys | 0 | 5,391,755,671 | 6.02% | ||
helo | 0 | 29,399,831,805 | 100% | ||
ilyastarar | 0 | 23,876,293,217 | 50% | ||
flauwy | 0 | 1,518,009,623 | 10% | ||
mahdiyari | 0 | 10,069,463,152 | 10% | ||
auliausu | 0 | 0 | 100% | ||
ronimm | 0 | 11,156,914,403 | 100% | ||
dysc0rd | 0 | 405,534,651 | 100% | ||
saksham | 0 | 442,082,978 | 37% | ||
makrotheblack | 0 | 2,830,810,523 | 50% | ||
simonluisi | 0 | 2,361,457,315 | 100% | ||
thinkkniht | 0 | 99,841,501 | 75% | ||
ewuoso | 0 | 9,609,344,002 | 100% | ||
elbleess | 0 | 297,259,530 | 50% | ||
jfuenmayor96 | 0 | 2,445,061,064 | 50% | ||
phogyan | 0 | 2,836,501,631 | 50% | ||
instantania.cat | 0 | 1,617,477,954 | 50% | ||
harshallele | 0 | 5,042,354,446 | 50% | ||
mirza-kun | 0 | 432,930,378 | 100% | ||
cifer | 0 | 5,725,485,186 | 80% | ||
tradeownsystems | 0 | 436,297,180 | 100% | ||
jesdn16 | 0 | 2,553,303,383 | 100% | ||
xtramedium | 0 | 306,307,457 | 50% | ||
dandalion | 0 | 64,432,919,591 | 100% | ||
odibezeking | 0 | 221,805,994 | 100% | ||
bhim | 0 | 73,371,360 | 50% | ||
stoodkev | 0 | 17,212,093,399 | 10% | ||
biplob12 | 0 | 150,375,267 | 50% | ||
dakeshi | 0 | 3,418,214,918 | 50% | ||
artoraly | 0 | 319,444,838 | 50% | ||
luisrod | 0 | 116,014,491 | 15% | ||
ansonoxy | 0 | 1,750,813,906 | 100% | ||
eastmael | 0 | 32,545,023,586 | 100% | ||
jamesbarraclough | 0 | 512,679,734 | 100% | ||
smafey | 0 | 996,772,477 | 50% | ||
lauraesfeliz | 0 | 504,062,128 | 100% | ||
hillaryaa | 0 | 1,163,746,387 | 100% | ||
espoem | 0 | 25,364,814,225 | 40% | ||
maneki-neko | 0 | 842,428,355 | 1% | ||
gotgame | 0 | 7,361,868,157 | 100% | ||
techmojo | 0 | 2,634,434,765 | 50% | ||
silasvogt | 0 | 217,555,700 | 50% | ||
loshcat | 0 | 2,927,156,565 | 100% | ||
isaganicabrales | 0 | 402,252,231 | 50% | ||
zulfan88 | 0 | 274,161,598 | 50% | ||
hakan8686 | 0 | 6,075,173,799 | 100% | ||
idlebright | 0 | 3,155,989,615 | 50% | ||
odebgaming | 0 | 433,941,947 | 100% | ||
utopian-io | 0 | 13,297,855,544,163 | 9% | ||
steaknsteem | 0 | 2,065,175,763 | 50% | ||
jaff8 | 0 | 61,417,125,190 | 100% | ||
masud222 | 0 | 241,776,726 | 50% | ||
advsamadhan | 0 | 156,350,784 | 50% | ||
moorkedi | 0 | 1,666,011,971 | 100% | ||
parag | 0 | 223,132,706 | 50% | ||
kimaben | 0 | 469,920,459 | 25% | ||
kslo | 0 | 2,540,358,118 | 50% | ||
nathalie13 | 0 | 875,642,690 | 100% | ||
not-a-bird | 0 | 4,836,035,452 | 50% | ||
adhew | 0 | 61,124,335 | 10% | ||
bitopia | 0 | 1,458,654,438 | 100% | ||
berkaytekinsen | 0 | 1,759,665,430 | 100% | ||
eleonardo | 0 | 182,943,347 | 10% | ||
zohaib715 | 0 | 336,457,645 | 50% | ||
naideth | 0 | 390,425,166 | 50% | ||
evilest-fiend | 0 | 2,658,761,013 | 100% | ||
azwarrangkuti | 0 | 68,368,295,555 | 100% | ||
shenoy | 0 | 10,392,023,423 | 10% | ||
studytext | 0 | 146,938,665 | 25% | ||
greenorange | 0 | 609,471,115 | 100% | ||
zapncrap | 0 | 9,043,387,094 | 30% | ||
littlesteemitph | 0 | 1,091,608,599 | 100% | ||
dandalioncub | 0 | 1,089,877,003 | 100% | ||
fabiocola | 0 | 871,205,776 | 100% | ||
checkthisout | 0 | 822,373,978 | 50% | ||
navx | 0 | 1,710,120,940 | 70% | ||
mvanyi | 0 | 1,679,089,876 | 100% | ||
handfree42 | 0 | 110,147,728 | 50% | ||
ilovekrys | 0 | 220,332,115 | 50% | ||
williams-owb | 0 | 208,650,262 | 50% | ||
family.app | 0 | 101,487,885 | 100% | ||
not-a-cat | 0 | 1,096,465,598 | 100% | ||
varja | 0 | 182,169,280 | 50% | ||
maphics | 0 | 106,304,356 | 100% | ||
sebastiengllmt | 0 | 307,095,054 | 50% | ||
halitsarpkaya | 0 | 3,613,447,727 | 100% | ||
utopian-1up | 0 | 4,715,619,757 | 100% | ||
odesanya | 0 | 219,924,624 | 50% | ||
barut | 0 | 694,999,836 | 50% | ||
phgnomo | 0 | 308,534,117 | 5% | ||
senseibabs | 0 | 432,927,053 | 100% | ||
carsonroscoe | 0 | 12,772,438,954 | 80% | ||
animefanrd | 0 | 51,295,696 | 10% | ||
camillius | 0 | 145,794,838 | 30% | ||
zlatkamrs | 0 | 306,690,873 | 50% | ||
salahudeen | 0 | 116,554,012 | 35% | ||
amosbastian | 0 | 15,556,898,481 | 50% | ||
mountainjewel | 0 | 1,067,314,888 | 5% | ||
yourmercury | 0 | 459,138,257 | 100% | ||
xplore | 0 | 772,903,408 | 50% | ||
goddywise4-eu | 0 | 434,447,872 | 100% | ||
layanmarissa | 0 | 219,953,367 | 50% | ||
proffgodswill | 0 | 61,368,512 | 10% | ||
thinkingmind | 0 | 3,333,461,144 | 100% | ||
bitcoin.news | 0 | 284,853,529 | 50% | ||
sweeverdev | 0 | 1,058,578,875 | 50% | ||
steemnest | 0 | 1,952,228,571 | 100% | ||
kodeblacc | 0 | 4,367,271,672 | 50% | ||
devilonwheels | 0 | 1,994,551,871 | 10% | ||
thescholarlyowl | 0 | 3,573,272,600 | 50% | ||
jerybanfield | 0 | 5,693,296,922 | 100% | ||
annyvery1 | 0 | 235,462,476 | 50% | ||
curx | 0 | 9,296,192,613 | 30% | ||
rhotimee | 0 | 374,179,214 | 50% | ||
kekegist | 0 | 909,661,598 | 100% | ||
jrmiller87 | 0 | 2,467,066,081 | 100% | ||
solomon507 | 0 | 274,043,245 | 50% | ||
patatesyiyen | 0 | 68,646,882 | 12.5% | ||
deejee | 0 | 122,966,840 | 20% | ||
rsteem | 0 | 428,272,463 | 50% | ||
thabiggdogg | 0 | 6,323,886,835 | 50% | ||
naturallife | 0 | 1,858,762,355 | 88% | ||
onin91 | 0 | 438,450,940 | 50% | ||
isabella394 | 0 | 2,603,181,513 | 100% | ||
gilnambatac | 0 | 733,730,885 | 100% | ||
emailbox19149 | 0 | 180,946,430 | 50% | ||
videosteemit | 0 | 1,544,351,305 | 25% | ||
cheesom | 0 | 272,798,624 | 50% | ||
frellarong | 0 | 108,706,754 | 50% | ||
organicgardener | 0 | 1,406,511,649 | 25% | ||
lemony-cricket | 0 | 9,672,026,813 | 20% | ||
minnowboosted | 0 | 287,467,999 | 50% | ||
saifannur-mzy | 0 | 244,366,421 | 50% | ||
yeswanth | 0 | 612,040,489 | 100% | ||
kaking | 0 | 229,438,905 | 50% | ||
exploreand | 0 | 1,178,382,815 | 25% | ||
anharismail | 0 | 1,663,925,241 | 100% | ||
petvalbra | 0 | 611,632,193 | 100% | ||
steemassistant | 0 | 457,857,270 | 100% | ||
amn | 0 | 1,214,647,335 | 100% | ||
used-lessboy | 0 | 217,477,327 | 50% | ||
hmctrasher | 0 | 407,354,997 | 10% | ||
photohunter1 | 0 | 4,041,573,330 | 100% | ||
photohunter3 | 0 | 3,193,326,007 | 100% | ||
photohunter4 | 0 | 3,181,604,427 | 100% | ||
photohunter5 | 0 | 3,174,129,366 | 100% | ||
armandofd | 0 | 76,352,549 | 15% | ||
howtosteem | 0 | 3,450,544,086 | 100% | ||
sylinda | 0 | 223,265,199 | 50% | ||
steemfix | 0 | 533,859,053 | 100% | ||
steemrent | 0 | 546,473,326 | 100% | ||
livsky | 0 | 101,941,001 | 50% | ||
tailslide | 0 | 226,527,866 | 50% | ||
roj | 0 | 2,433,764,826 | 100% | ||
andiepumpgun | 0 | 250,869,482 | 50% | ||
aderemi01 | 0 | 1,780,160,110 | 50% | ||
soykatherine | 0 | 220,279,236 | 50% | ||
sampath94 | 0 | 230,430,160 | 50% | ||
killbill73 | 0 | 165,103,322 | 50% | ||
amirdesaingrafis | 0 | 718,422,802 | 50% | ||
cauac | 0 | 76,361,635 | 30% | ||
fai.zul | 0 | 293,795,707 | 50% | ||
nightdragon | 0 | 228,996,446 | 50% | ||
kilianparadise | 0 | 294,587,693 | 15% | ||
jacintoelbarouki | 0 | 215,110,031 | 50% | ||
criptokingko | 0 | 217,846,214 | 50% | ||
aliyu-s | 0 | 478,949,297 | 50% | ||
estherekanem | 0 | 432,396,660 | 100% | ||
soydandan | 0 | 61,412,398 | 10% | ||
dawa | 0 | 186,583,243 | 50% | ||
muratti | 0 | 61,121,856 | 10% | ||
flinter | 0 | 156,333,061 | 50% | ||
maribelanzola | 0 | 255,078,042 | 50% | ||
mwfiae | 0 | 3,821,211,892 | 10% | ||
opulence | 0 | 1,808,908,840 | 50% | ||
phasma | 0 | 122,612,788 | 20% | ||
azharmaulana | 0 | 233,019,184 | 50% | ||
pixelproperty | 0 | 2,648,016,719 | 100% | ||
nikema | 0 | 61,573,071 | 5% | ||
carlitojoshua | 0 | 125,902,036 | 50% | ||
donjyde | 0 | 223,526,161 | 50% | ||
nonsqtr | 0 | 488,715,120 | 50% | ||
crispycoinboys | 0 | 2,136,922,181 | 30% | ||
zcool | 0 | 115,394,152 | 10% | ||
gwapoaller | 0 | 307,097,758 | 50% | ||
carloniere | 0 | 133,604,614 | 50% | ||
khairulfahmi92 | 0 | 441,155,059 | 100% | ||
bryanwilliam | 0 | 202,671,864 | 50% | ||
bluestorm | 0 | 460,899,167 | 75% | ||
daszod | 0 | 494,394,068 | 100% | ||
ayay | 0 | 52,033,079 | 11% | ||
muammarnst | 0 | 306,191,533 | 50% | ||
jayo | 0 | 174,752,576 | 50% | ||
sugandhaseth | 0 | 610,893,082 | 100% | ||
pepememes | 0 | 183,689,190 | 50% | ||
kaell | 0 | 232,315,900 | 50% | ||
ahmad097 | 0 | 230,604,184 | 50% | ||
animesukidesu | 0 | 174,926,550 | 50% | ||
zay-arasi | 0 | 216,863,999 | 50% | ||
wealth4good | 0 | 295,645,836 | 5% | ||
esme-svh | 0 | 369,037,712 | 50% | ||
sharminwadud | 0 | 302,396,358 | 50% | ||
lsanek | 0 | 296,979,722 | 50% | ||
ruslanghani | 0 | 250,446,228 | 100% | ||
lykia | 0 | 300,390,980 | 50% | ||
realness | 0 | 306,475,624 | 50% | ||
wise-confucius | 0 | 354,713,264 | 50% | ||
musicbot | 0 | 109,698,635 | 100% | ||
anime.lovers | 0 | 306,354,871 | 50% | ||
flugbot | 0 | 122,724,728 | 100% | ||
lemcriq | 0 | 53,806,130 | 20% | ||
flag-haejin | 0 | 371,144,228 | 50% | ||
haejin-sucks | 0 | 502,325,043 | 50% | ||
steemit-abuse | 0 | 105,923,685 | 50% | ||
ernoldlvb | 0 | 103,744,875 | 50% | ||
born2crypto | 0 | 395,395,123 | 50% | ||
geezyweezy | 0 | 496,446,931 | 100% | ||
kryptogermany | 0 | 256,874,586 | 50% | ||
gydronium | 0 | 143,740,893 | 30% | ||
clevershovel | 0 | 1,503,631,293 | 20% | ||
masterofdisaster | 0 | 251,422,310 | 50% | ||
jramirezviera | 0 | 67,387,490 | 15% | ||
nazmulrana | 0 | 229,706,727 | 50% | ||
godsngh1 | 0 | 51,925,425 | 20% | ||
cute-teen | 0 | 176,995,421 | 50% | ||
depq | 0 | 444,785,395 | 80% | ||
sazid36 | 0 | 305,921,993 | 50% | ||
joanpablo | 0 | 271,910,005 | 50% | ||
truthtrader | 0 | 5,739,463,078 | 4% | ||
gnaimul | 0 | 220,268,752 | 50% | ||
romanleopold | 0 | 1,459,654,169 | 50% | ||
clayjohn | 0 | 7,817,382,825 | 100% | ||
morin89 | 0 | 217,448,421 | 50% | ||
rancho-relaxo | 0 | 71,543,299 | 50% | ||
xbox-gamer | 0 | 71,522,442 | 50% | ||
niouton | 0 | 8,656,731,290 | 40% | ||
umut1905 | 0 | 76,375,202 | 50% | ||
steemitcanarias | 0 | 100,947,954 | 30% | ||
editorspicks | 0 | 61,230,367 | 50% | ||
darkassassin | 0 | 1,354,945,395 | 90% | ||
syahrin | 0 | 224,029,845 | 50% | ||
cryptocopy | 0 | 305,823,080 | 50% | ||
dotman-art | 0 | 217,669,384 | 50% | ||
hermanasquintero | 0 | 443,633,122 | 80% | ||
artsyunicorn | 0 | 59,972,679 | 50% | ||
karinasia25 | 0 | 443,190,093 | 80% | ||
solpaman | 0 | 296,537,618 | 50% | ||
femidada | 0 | 220,169,152 | 50% | ||
mvoalevine | 0 | 223,298,146 | 50% | ||
steemit-username | 0 | 137,726,954 | 50% | ||
oezixxx | 0 | 485,152,415 | 100% | ||
ongolodesire | 0 | 217,135,290 | 50% | ||
pinkyangel | 0 | 216,996,722 | 50% | ||
blancoazx | 0 | 444,948,562 | 80% | ||
carmen52 | 0 | 442,891,266 | 80% | ||
special-agent | 0 | 60,336,735 | 50% |
Reall a helpfull tutorial
author | amn |
---|---|
permlink | re-alfarisi94-6wymfp-consuming-jwt-api-with-mongodb-and-node-js-part-3-verify-token-decode-token-route-protection-20180506t085543534z |
category | utopian-io |
json_metadata | {"tags":["utopian-io"],"app":"steemit/0.1"} |
created | 2018-05-06 08:55:45 |
last_update | 2018-05-06 08:55:45 |
depth | 1 |
children | 1 |
last_payout | 2018-05-13 08:55:45 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 25 |
author_reputation | 1,578,841,540,124 |
root_title | "Consuming JWT API with MongoDB and Node.js part-3# Verify Token, Decode Token , Route Protection" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 54,163,603 |
net_rshares | 0 |
Thanks @amn
author | alfarisi94 |
---|---|
permlink | re-amn-re-alfarisi94-6wymfp-consuming-jwt-api-with-mongodb-and-node-js-part-3-verify-token-decode-token-route-protection-20180506t133544288z |
category | utopian-io |
json_metadata | {"tags":["utopian-io"],"users":["amn"],"app":"steemit/0.1"} |
created | 2018-05-06 13:35:48 |
last_update | 2018-05-06 13:35:48 |
depth | 2 |
children | 0 |
last_payout | 2018-05-13 13:35:48 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 11 |
author_reputation | 5,678,893,550,406 |
root_title | "Consuming JWT API with MongoDB and Node.js part-3# Verify Token, Decode Token , Route Protection" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 54,199,417 |
net_rshares | 0 |
https://media1.tenor.com/images/80e1a214d74cb68be337a5ffc4635860/tenor.gif?itemid=11764105
author | iqbalhood |
---|---|
permlink | re-alfarisi94-6wymfp-consuming-jwt-api-with-mongodb-and-node-js-part-3-verify-token-decode-token-route-protection-20180508t092325201z |
category | utopian-io |
json_metadata | {"tags":["utopian-io"],"image":["https://media1.tenor.com/images/80e1a214d74cb68be337a5ffc4635860/tenor.gif?itemid=11764105"],"app":"steemit/0.1"} |
created | 2018-05-08 09:23:27 |
last_update | 2018-05-08 09:23:27 |
depth | 1 |
children | 0 |
last_payout | 2018-05-15 09:23:27 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 90 |
author_reputation | 11,768,748,838,027 |
root_title | "Consuming JWT API with MongoDB and Node.js part-3# Verify Token, Decode Token , Route Protection" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 54,535,807 |
net_rshares | 0 |
Awesome post!! Keep it up and check out [THIS POST](https://steemit.com/life/@cryptopaparazzi/chapter-one-let-there-be-the-man-and-there-was-a-man-let-there-be-a-woman-and-there-was-sex) as well as I have something similar.
author | james1122 |
---|---|
permlink | re-6wymfp-consuming-jwt-api-with-mongodb-and-node-js-part-3-verify-token-decode-token-route-protection-20180502t165633 |
category | utopian-io |
json_metadata | "" |
created | 2018-05-02 16:56:33 |
last_update | 2018-05-02 16:56:33 |
depth | 1 |
children | 0 |
last_payout | 2018-05-09 16:56:33 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 225 |
author_reputation | -1,569,261,196,247 |
root_title | "Consuming JWT API with MongoDB and Node.js part-3# Verify Token, Decode Token , Route Protection" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 53,477,801 |
net_rshares | 0 |
Thank you for the contribution It has been approved. ---------------------------------------------------------------------- Need help? Write a ticket on https://support.utopian.io. Chat with us on [Discord](https://discord.gg/uTyJkNm). **[[utopian-moderator]](https://utopian.io/moderators)**
author | portugalcoin | ||||||
---|---|---|---|---|---|---|---|
permlink | re-alfarisi94-6wymfp-consuming-jwt-api-with-mongodb-and-node-js-part-3-verify-token-decode-token-route-protection-20180502t202529972z | ||||||
category | utopian-io | ||||||
json_metadata | {"tags":["utopian-io"],"community":"utopian","app":"utopian/1.0.0"} | ||||||
created | 2018-05-02 20:25:30 | ||||||
last_update | 2018-05-02 20:25:30 | ||||||
depth | 1 | ||||||
children | 0 | ||||||
last_payout | 2018-05-09 20:25:30 | ||||||
cashout_time | 1969-12-31 23:59:59 | ||||||
total_payout_value | 0.000 HBD | ||||||
curator_payout_value | 0.000 HBD | ||||||
pending_payout_value | 0.000 HBD | ||||||
promoted | 0.000 HBD | ||||||
body_length | 294 | ||||||
author_reputation | 602,506,495,081,078 | ||||||
root_title | "Consuming JWT API with MongoDB and Node.js part-3# Verify Token, Decode Token , Route Protection" | ||||||
beneficiaries |
| ||||||
max_accepted_payout | 1,000,000.000 HBD | ||||||
percent_hbd | 10,000 | ||||||
post_id | 53,508,804 | ||||||
net_rshares | 0 |
#### Hey @alfarisi94 We're already looking forward to your next contribution! ##### Utopian Witness! <a href="https://v2.steemconnect.com/sign/account-witness-vote?witness=utopian-io&approve=1">Vote for Utopian Witness!</a> We are made of developers, system administrators, entrepreneurs, artists, content creators, thinkers. We embrace every nationality, mindset and belief. **Want to chat? Join us on Discord https://discord.gg/h52nFrV**
author | utopian-io |
---|---|
permlink | re-alfarisi94-6wymfp-consuming-jwt-api-with-mongodb-and-node-js-part-3-verify-token-decode-token-route-protection-20180505t150240718z |
category | utopian-io |
json_metadata | {"tags":["utopian-io"],"users":["alfarisi94"],"links":["https://v2.steemconnect.com/sign/account-witness-vote?witness=utopian-io&approve=1","https://discord.gg/h52nFrV"],"app":"steemit/0.1"} |
created | 2018-05-05 15:02:39 |
last_update | 2018-05-05 15:02:39 |
depth | 1 |
children | 0 |
last_payout | 2018-05-12 15:02:39 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 441 |
author_reputation | 152,955,367,999,756 |
root_title | "Consuming JWT API with MongoDB and Node.js part-3# Verify Token, Decode Token , Route Protection" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 54,037,973 |
net_rshares | 0 |