I AM CREATING ONLINE SHOPPING WEBSITE WITH REACTJS IN FRONTEND AND SPRING BOOT IN BACKEND. I HAVE CREATED NAVBAR IN WHICH THERE IS MULTIPLE NAV OPTIONS ALONG WITH ADMINDASHBOARD.. NOW I WANT TO HIDE THE ADMINDASHBOARD OPTION FROM THE NAVBAR.AND ONCE USER IS LOGGEDIN,THEN I WANT TO CHECK HIS ROLE, AND IF USER ROLE IS “ROLE_ADMIN” THEN ONLY I WANT TO SHOW THE ADMIN DASHBOARD OPTION OTHERWISE HE SHOULD NOT ABLE TO SEE ADMIN_DASHBOARD OPTION.
MY BACKEND IS SENDING JWTTOKEN AND USER_ROLE AS A RESPONSE ONCE AUTHENTICATED USER IS LOGGEDIN.. I AM STORING TOKEN IN THE LOCALSTORAGE. BUT TO CONDITIONALLY RENDERING CERTAIN CONTENTS IN MULTIPLE DIFFERENT COMPONENTS I NEED USER_ROLE ACCESSIBLE IN DIFFERENT COMPONENTS.
I HAVE TRIED TO STORE USER_ROLE ALSO IN LOCALSTORAGE BUT IT IS NOT LOOKING SECURE AND ANYONE CAN MODIFY IT TO ACCESS THE SECURED CONTENTS.
I HAVE ALSO TRIED BY USING REACT’S STATE, I HAVE CREATED ‘USER_ROLES’ STATE WITH DEFAULT VALUE “USER” TO ONLY SHOW THE USER’S CONTENT AND WHEN USER IS LOGGING IN THEN UPDATING USER_ROLE STATE TO THE ROLE (USER OR ADMIN) OF THAT LOGGED IN USER AND RENDERING DEPENDING UPON HIS ROLE. BUT THIS APPROACH IS ALSO NOT WORKING BCOZ THE STATE VALUE AUTOMATICALLY GETTING RE-INITILIZED WITH DEFAULT VALUE “ROLE_USER” WHENEVER I AM RELOADING THE WEBSITE OR WHENEVER THE COMPONENT IS RE-RENDERING. I WANT THE ROLE_USER VALUE TO BE PERSISTENT UNTILL THE USER GET LOGGED OUT OR TO CERTAIN DEFINED EXPIRY TIME.
SUGGEST ME SOLUTIONS, WHICH APPROACH IS BEST FOR RENDERING DIFFERENT CONTENTS OF WEBSITE BASED ON ROLES AND HOW TO DO IT.
Nuwair Hakim is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.