CINXE.COM
Authentication - DEV Community
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Authentication - DEV Community</title> <meta name="last-updated" content="2025-02-21 15:27:18 UTC"> <meta name="user-signed-in" content="false"> <meta name="head-cached-at" content="1740151638"> <meta name="environment" content="production"> <link rel="stylesheet" href="https://assets.dev.to/assets/minimal-0a971eb021d2dc2b145c1df786e1b97f418c6b2d066e79802fea980acb513937.css" media="all" id="main-minimal-stylesheet" /> <link rel="stylesheet" href="https://assets.dev.to/assets/views-1c703342dce6eac414f19ca7fd07bcf83cbe44088659758144e52e7fa1e92dd3.css" media="all" id="main-views-stylesheet" /> <link rel="stylesheet" href="https://assets.dev.to/assets/crayons-0f2fc85bc159498f8ae6fba58c460e6deba863d02d59dfa994c1954976ddb6cc.css" media="all" id="main-crayons-stylesheet" /> <script src="https://assets.dev.to/assets/base-a87669a7c932717e71153a0e9be51887fd49f60281c77873f33571fab239e9d6.js" defer="defer"></script> <script src="https://assets.dev.to/assets/application-7258612fccf5d56314a6e4ad1898b4f818f474c4bb3485e302428d489a769a17.js" defer="defer"></script> <script src="https://assets.dev.to/assets/baseInitializers-ee70590bbbe9b8f9d750ea9b4b7e809c47123e9064196238ba4e65bc65caf708.js" defer="defer"></script> <script src="https://assets.dev.to/assets/baseTracking-b6bf73e5ee66633e151e7d5b7c6bbccedfa4c59e3615be97b98c4c0f543ddae7.js" defer="defer"></script> <meta name="search-script" content="https://assets.dev.to/assets/Search-1667defd820799649d6c3b2864f13786058190df703dd50ab75dce1ccb834c4b.js"> <link rel="canonical" href="https://dev.to/t/authentication" /> <meta name="description" content="authentication content on DEV Community"> <meta name="keywords" content="software development, engineering, authentication"> <meta property="og:type" content="website" /> <meta property="og:url" content="https://dev.to/t/authentication" /> <meta property="og:title" content="Authentication" /> <meta property="og:description" content="Authentication content on DEV Community" /> <meta property="og:site_name" content="DEV Community" /> <meta name="twitter:site" content="@thepracticaldev"> <meta name="twitter:creator" content="@Authentication"> <meta name="twitter:title" content="Authentication"> <meta name="twitter:description" content="Authentication content on DEV Community"> <meta name="twitter:card" content="summary_large_image"> <meta property="og:image" content="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3otvb2z646ytpt1hl2rv.jpg"> <meta name="twitter:image:src" content="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3otvb2z646ytpt1hl2rv.jpg"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <link rel="icon" type="image/x-icon" href="https://media2.dev.to/dynamic/image/width=32,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png" /> <link rel="apple-touch-icon" href="https://media2.dev.to/dynamic/image/width=180,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png"> <link rel="apple-touch-icon" sizes="152x152" href="https://media2.dev.to/dynamic/image/width=152,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png"> <link rel="apple-touch-icon" sizes="180x180" href="https://media2.dev.to/dynamic/image/width=180,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png"> <link rel="apple-touch-icon" sizes="167x167" href="https://media2.dev.to/dynamic/image/width=167,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png"> <link href="https://media2.dev.to/dynamic/image/width=192,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png" rel="icon" sizes="192x192" /> <link href="https://media2.dev.to/dynamic/image/width=128,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png" rel="icon" sizes="128x128" /> <meta name="apple-mobile-web-app-title" content="dev.to"> <meta name="application-name" content="dev.to"> <meta name="theme-color" content="#ffffff" media="(prefers-color-scheme: light)"> <meta name="theme-color" content="#000000" media="(prefers-color-scheme: dark)"> <link rel="search" href="https://dev.to/open-search.xml" type="application/opensearchdescription+xml" title="DEV Community" /> <meta property="forem:name" content="DEV Community" /> <meta property="forem:logo" content="https://media2.dev.to/dynamic/image/width=512,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png" /> <meta property="forem:domain" content="dev.to" /> </head> <body class="sans-serif-article-body default-header" data-user-status="logged-out" data-community-name="DEV Community" data-subscription-icon="https://assets.dev.to/assets/subscription-icon-805dfa7ac7dd660f07ed8d654877270825b07a92a03841aa99a1093bd00431b2.png" data-locale="en" data-honeybadger-key="hbp_nqu4Y66HuEKlD6YRGssZuRQnPOjDm50J8Zkr" data-deployed-at="2025-02-20T14:56:01Z" data-latest-commit-id="cf24e7ead7627d035c9edc0b634e332f7a728698" data-ga-tracking="UA-71991109-1" data-cookie-banner-user-context="logged_out_only" data-cookie-banner-platform-context="off" data-algolia-id="PRSOBFP46H" data-algolia-search-key="9aa7d31610cba78851c9b1f63776a9dd" data-algolia-display="true" data-dynamic-url-component="bb-2" data-ga4-tracking-id="G-TYEM8Y3JN3"> <script> if (navigator.userAgent.includes('ForemWebView/1') || window.frameElement) { document.body.classList.add("hidden-shell"); } </script> <link rel="stylesheet" href="https://assets.dev.to/assets/minimal-0a971eb021d2dc2b145c1df786e1b97f418c6b2d066e79802fea980acb513937.css" media="all" id="secondary-minimal-stylesheet" /> <link rel="stylesheet" href="https://assets.dev.to/assets/views-1c703342dce6eac414f19ca7fd07bcf83cbe44088659758144e52e7fa1e92dd3.css" media="all" id="secondary-views-stylesheet" /> <link rel="stylesheet" href="https://assets.dev.to/assets/crayons-0f2fc85bc159498f8ae6fba58c460e6deba863d02d59dfa994c1954976ddb6cc.css" media="all" id="secondary-crayons-stylesheet" /> <div id="body-styles"> <style> :root { --accent-brand-lighter-rgb: 80, 99, 301; --accent-brand-rgb: 59, 73, 223; --accent-brand-darker-rgb: 47, 58, 178; } </style> </div> <div id="audiocontent" data-podcast=""> </div> <div class="navigation-progress" id="navigation-progress"></div> <header id="topbar" class="crayons-header topbar print-hidden"> <span id="route-change-target" tabindex="-1"></span> <a href="#main-content" class="skip-content-link">Skip to content</a> <div class="crayons-header__container"> <span class="inline-block m:hidden "> <button class="c-btn c-btn--icon-alone js-hamburger-trigger mx-2"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" role="img" aria-labelledby="acxak91iiz8vj09fsmr1tfwgi1ilw7iy" class="crayons-icon"><title id="acxak91iiz8vj09fsmr1tfwgi1ilw7iy">Navigation menu</title> <path d="M3 4h18v2H3V4zm0 7h18v2H3v-2zm0 7h18v2H3v-2z"></path> </svg> </button> </span> <a href="/" class="site-logo" aria-label="DEV Community Home"> <img class="site-logo__img" src="https://media2.dev.to/dynamic/image/quality=100/https://dev-to-uploads.s3.amazonaws.com/uploads/logos/resized_logo_UQww2soKuUsjaOGNB38o.png" style="aspect-ratio: 10 / 8" alt="DEV Community"> </a> <div class="crayons-header--search js-search-form" id="header-search"> <form accept-charset="UTF-8" method="get" action="/search" role="search"> <div class="crayons-fields crayons-fields--horizontal"> <div class="crayons-field flex-1 relative"> <input id="search-input" class="crayons-header--search-input crayons-textfield js-search-input" type="text" id="nav-search" name="q" placeholder="Search..." autocomplete="off" /> <button type="submit" aria-label="Search" class="c-btn c-btn--icon-alone absolute inset-px right-auto mt-0 py-0"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" role="img" aria-labelledby="argztb7i3lec42007br2xu6aso4fzad" aria-hidden="true" class="crayons-icon"><title id="argztb7i3lec42007br2xu6aso4fzad">Search</title> <path d="M18.031 16.617l4.283 4.282-1.415 1.415-4.282-4.283A8.96 8.96 0 0111 20c-4.968 0-9-4.032-9-9s4.032-9 9-9 9 4.032 9 9a8.96 8.96 0 01-1.969 5.617zm-2.006-.742A6.977 6.977 0 0018 11c0-3.868-3.133-7-7-7-3.868 0-7 3.132-7 7 0 3.867 3.132 7 7 7a6.977 6.977 0 004.875-1.975l.15-.15z"></path> </svg> </button> <a class="crayons-header--search-brand-indicator" href="https://www.algolia.com/developers/?utm_source=devto&utm_medium=referral" target="_blank" rel="noopener noreferrer"> Powered by <svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" width="24" height="24" viewBox="0 0 500 500.34" role="img" aria-labelledby="apzpduowya42g0ets6l15dib13x7zgk7" aria-hidden="true" class="crayons-icon"><title id="apzpduowya42g0ets6l15dib13x7zgk7">Search</title> <defs></defs><path class="cls-1" d="M250,0C113.38,0,2,110.16,.03,246.32c-2,138.29,110.19,252.87,248.49,253.67,42.71,.25,83.85-10.2,120.38-30.05,3.56-1.93,4.11-6.83,1.08-9.52l-23.39-20.74c-4.75-4.22-11.52-5.41-17.37-2.92-25.5,10.85-53.21,16.39-81.76,16.04-111.75-1.37-202.04-94.35-200.26-206.1,1.76-110.33,92.06-199.55,202.8-199.55h202.83V407.68l-115.08-102.25c-3.72-3.31-9.43-2.66-12.43,1.31-18.47,24.46-48.56,39.67-81.98,37.36-46.36-3.2-83.92-40.52-87.4-86.86-4.15-55.28,39.65-101.58,94.07-101.58,49.21,0,89.74,37.88,93.97,86.01,.38,4.28,2.31,8.28,5.53,11.13l29.97,26.57c3.4,3.01,8.8,1.17,9.63-3.3,2.16-11.55,2.92-23.6,2.07-35.95-4.83-70.39-61.84-127.01-132.26-131.35-80.73-4.98-148.23,58.18-150.37,137.35-2.09,77.15,61.12,143.66,138.28,145.36,32.21,.71,62.07-9.42,86.2-26.97l150.36,133.29c6.45,5.71,16.62,1.14,16.62-7.48V9.49C500,4.25,495.75,0,490.51,0H250Z"></path> </svg> Algolia </a> </div> </div> </form> </div> <div class="flex items-center h-100 ml-auto"> <div class="flex" id="authentication-top-nav-actions"> <span class="hidden m:block"> <a href="https://dev.to/enter" class="c-link c-link--block mr-2 whitespace-nowrap ml-auto" data-no-instant> Log in </a> </span> <a href="https://dev.to/enter?state=new-user" data-tracking-id="ca_top_nav" data-tracking-source="top_navbar" class="c-cta c-cta--branded whitespace-nowrap mr-2" data-no-instant> Create account </a> </div> </div> </div> </header> <div class="hamburger"> <div class="hamburger__content"> <header class="hamburger__content__header"> <h2 class="fs-l fw-bold flex-1 break-word lh-tight">DEV Community</h2> <button class="c-btn c-btn--icon-alone js-hamburger-trigger shrink-0" aria-label="Close"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" role="img" aria-labelledby="asz282e1h7cp7o2d85euvfnwfeyi9s6" aria-hidden="true" class="crayons-icon c-btn__icon"><title id="asz282e1h7cp7o2d85euvfnwfeyi9s6">Close</title><path d="M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636l4.95 4.95z"></path></svg> </button> </header> <div class="p-2 js-navigation-links-container" id="authentication-hamburger-actions"> </div> </div> <div class="hamburger__overlay js-hamburger-trigger"></div> </div> <div id="active-broadcast" class="broadcast-wrapper"></div> <div id="page-content" class="wrapper tagged_articles tagged_articles-index" data-current-page="tagged_articles-index"> <div id="page-content-inner" data-internal-nav="false"> <div id="page-route-change" class="screen-reader-only" aria-live="polite" aria-atomic="true"></div> <div data-tag-id="1544" data-tag-name="authentication" id="tag-1544" class="crayons-layout js-tag-card"> <header class="crayons-card branded-4 p-4 l:p-6 spec__tag-header" style="border-top-color: "> <div class="flex"> <div class="flex flex-col w-100 justify-center"> <div class="flex justify-between items-center"> <h1 class="crayons-title"> <span class="opacity-50">#</span> authentication </h1> <div id="tag-buttons-1544" class="mt-auto flex items-end justify-between"> <div class="flex gap-2"> <button class="c-btn c-btn--primary js-follow-tag-button" aria-label="Follow tag: authentication"> Follow </button> <button class="c-btn js-hide-tag-button" aria-label="Hide tag: authentication"> Hide </button> </div> </div> </div> </div> </div> </header> </div> <div class="home sub-home" id="index-container" data-params="{"tag":"authentication","sort_by":"hotness_score","sort_direction":"desc"}" data-which="" data-tag="authentication" data-feed="base-feed" data-requires-approval="false" data-articles-since=""> <div id="sidebar-wrapper-left" class="sidebar-wrapper sidebar-wrapper-left"> <div class="sidebar-bg" id="sidebar-bg-left"></div> <aside class="side-bar"> <div class="widget js-policy-article-create"> <a class="crayons-btn crayons-btn--s" href="/new/authentication"> Create Post </a> </div> <div class="sidebar-data"> <div> 1072 Posts Published </div> <hr /> <div class="olderposts-header">Older #authentication posts</div> <div class="olderposts-links"> <span class="olderposts-pagenumber">1</span> <a href="https://dev.to/t/authentication/page/2" class="olderposts-pagenumber">2</a> <a href="https://dev.to/t/authentication/page/3" class="olderposts-pagenumber">3</a> <a href="https://dev.to/t/authentication/page/4" class="olderposts-pagenumber">4</a> <a href="https://dev.to/t/authentication/page/5" class="olderposts-pagenumber">5</a> <a href="https://dev.to/t/authentication/page/6" class="olderposts-pagenumber">6</a> <a href="https://dev.to/t/authentication/page/7" class="olderposts-pagenumber">7</a> <a href="https://dev.to/t/authentication/page/8" class="olderposts-pagenumber">8</a> <a href="https://dev.to/t/authentication/page/9" class="olderposts-pagenumber">9</a> </div> </div> </aside> </div> <main class="articles-list" id="main-content" data-follow-button-container="true"> <header class="flex items-center p-2 m:p-0 m:pb-2" id="on-page-nav-controls"> <h1 class="screen-reader-only">Posts</h1> <button type="button" class="crayons-btn crayons-btn--ghost crayons-btn--icon mr-2 inline-block m:hidden mb-auto" id="on-page-nav-butt-left" aria-label="nav-button-left"> <div class="crayons-icon nav-icon "> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" role="img" aria-labelledby="aittfa9h3rxkyr29kmdpa0c6nigpy7k3" class="crayons-icon"><title id="aittfa9h3rxkyr29kmdpa0c6nigpy7k3">Left menu</title> <path d="M3 4h18v2H3V4zm0 7h18v2H3v-2zm0 7h18v2H3v-2z"></path> </svg> </div> </button> <div class="flex-1 flex items-center justify-between"> <div class="crayons-notice w-100" aria-live="polite">👋 <a href="/enter">Sign in</a> for the ability to sort posts by <strong>relevant</strong>, <strong>latest</strong>, or <strong>top</strong>.</div> </div> <button type="button" class="crayons-btn crayons-btn--ghost crayons-btn--icon ml-2 inline-block l:hidden mb-auto" id="on-page-nav-butt-right" aria-label="nav-button-right"> <div class="crayons-icon nav-icon "> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" role="img" aria-labelledby="aik6kioac9dvftd2w4tr2q2rzs9izyh8" class="crayons-icon"><title id="aik6kioac9dvftd2w4tr2q2rzs9izyh8">Right menu</title> <path d="M3 4h18v2H3V4zm0 7h18v2H3v-2zm0 7h18v2H3v-2z"></path> </svg> </div> </button> </header> <div class="substories" id="substories"> <div class="crayons-story " data-feed-content-id="2291373" data-content-user-id="2777927"> <a href="https://dev.to/masterrj/understanding-access-tokens-and-refresh-tokens-in-authentication-4b3d" aria-labelledby="article-link-2291373" class="crayons-story__hidden-navigation-link">Understanding Access Tokens and Refresh Tokens in Authentication</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/masterrj" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2777927%2F9ac52971-bb0d-4217-8dee-caddd698034a.png" alt="masterrj profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/masterrj" class="crayons-story__secondary fw-medium m:hidden"> Rajat Sharma </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2291373" aria-controls="story-author-preview-content-2291373" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Rajat Sharma profile details"> Rajat Sharma </button> <div id="story-author-preview-content-2291373" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/masterrj" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2777927%2F9ac52971-bb0d-4217-8dee-caddd698034a.png" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Rajat Sharma</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2777927,"className":"User","name":"Rajat Sharma"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2777927"></div> </div> </div> </div> </div> <a href="https://dev.to/masterrj/understanding-access-tokens-and-refresh-tokens-in-authentication-4b3d" class="crayons-story__tertiary fs-xs"><time datetime="2025-02-21T11:33:55Z">Feb 21</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1740137635"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/masterrj/understanding-access-tokens-and-refresh-tokens-in-authentication-4b3d" data-preload-image="" id="article-link-2291373"> Understanding Access Tokens and Refresh Tokens in Authentication </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(86, 39, 101, 0.10); --tag-prefix: #562765; --tag-bg-hover: rgba(86, 39, 101, 0.10); --tag-prefix-hover: #562765; " href="/t/webdev"><span class="crayons-tag__prefix">#</span>webdev</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/authentication"><span class="crayons-tag__prefix">#</span>authentication</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/jwt"><span class="crayons-tag__prefix">#</span>jwt</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(27, 172, 128, 0.10); --tag-prefix: #1bac80; --tag-bg-hover: rgba(27, 172, 128, 0.10); --tag-prefix-hover: #1bac80; " href="/t/security"><span class="crayons-tag__prefix">#</span>security</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/masterrj/understanding-access-tokens-and-refresh-tokens-in-authentication-4b3d#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Understanding Access Tokens and Refresh Tokens in Authentication"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a5pteqoxklv1ezmdvzydybkwcuxyi8od" class="crayons-icon"><title id="a5pteqoxklv1ezmdvzydybkwcuxyi8od">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 3 min read </small> <button type="button" id="article-save-button-2291373" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2291373" data-article-author-id="2777927" aria-label="Save post Understanding Access Tokens and Refresh Tokens in Authentication to reading list" title="Save post Understanding Access Tokens and Refresh Tokens in Authentication to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2290672" data-content-user-id="491251"> <a href="https://dev.to/vimaltwit/testing-azure-ad-protected-api-g6h" aria-labelledby="article-link-2290672" class="crayons-story__hidden-navigation-link">Testing Azure AD-protected API</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/vimaltwit" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F491251%2Fb4b64054-dbb7-4675-97a0-45c283b560a7.JPG" alt="vimaltwit profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/vimaltwit" class="crayons-story__secondary fw-medium m:hidden"> Vimal </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2290672" aria-controls="story-author-preview-content-2290672" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Vimal profile details"> Vimal </button> <div id="story-author-preview-content-2290672" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/vimaltwit" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F491251%2Fb4b64054-dbb7-4675-97a0-45c283b560a7.JPG" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Vimal</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":491251,"className":"User","name":"Vimal"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="491251"></div> </div> </div> </div> </div> <a href="https://dev.to/vimaltwit/testing-azure-ad-protected-api-g6h" class="crayons-story__tertiary fs-xs"><time datetime="2025-02-21T10:05:21Z">Feb 21</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1740132321"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/vimaltwit/testing-azure-ad-protected-api-g6h" data-preload-image="" id="article-link-2290672"> Testing Azure AD-protected API </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/authentication"><span class="crayons-tag__prefix">#</span>authentication</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/microsoftentraid"><span class="crayons-tag__prefix">#</span>microsoftentraid</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(27, 172, 128, 0.10); --tag-prefix: #1bac80; --tag-bg-hover: rgba(27, 172, 128, 0.10); --tag-prefix-hover: #1bac80; " href="/t/security"><span class="crayons-tag__prefix">#</span>security</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/appregistration"><span class="crayons-tag__prefix">#</span>appregistration</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/vimaltwit/testing-azure-ad-protected-api-g6h#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Testing Azure AD-protected API"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aj9wr7cur8lamds9x255akvp583coj6d" class="crayons-icon"><title id="aj9wr7cur8lamds9x255akvp583coj6d">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 3 min read </small> <button type="button" id="article-save-button-2290672" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2290672" data-article-author-id="491251" aria-label="Save post Testing Azure AD-protected API to reading list" title="Save post Testing Azure AD-protected API to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2288482" data-content-user-id="2735090"> <a href="https://dev.to/blue_byte/easy-bug-open-redirect-on-oauth-20-redirecturi-param-2h8f" aria-labelledby="article-link-2288482" class="crayons-story__hidden-navigation-link">Easy Bug: Open-Redirect on OAuth 2.0 redirect_uri param</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/blue_byte" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2735090%2F36f57446-2180-4a54-8109-09240c5dbcf1.png" alt="blue_byte profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/blue_byte" class="crayons-story__secondary fw-medium m:hidden"> Blue Byte </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2288482" aria-controls="story-author-preview-content-2288482" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Blue Byte profile details"> Blue Byte </button> <div id="story-author-preview-content-2288482" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/blue_byte" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2735090%2F36f57446-2180-4a54-8109-09240c5dbcf1.png" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Blue Byte</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2735090,"className":"User","name":"Blue Byte"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2735090"></div> </div> </div> </div> </div> <a href="https://dev.to/blue_byte/easy-bug-open-redirect-on-oauth-20-redirecturi-param-2h8f" class="crayons-story__tertiary fs-xs"><time datetime="2025-02-19T22:28:28Z">Feb 19</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1740004108"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/blue_byte/easy-bug-open-redirect-on-oauth-20-redirecturi-param-2h8f" data-preload-image="" id="article-link-2288482"> Easy Bug: Open-Redirect on OAuth 2.0 redirect_uri param </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/bugbounty"><span class="crayons-tag__prefix">#</span>bugbounty</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/oauth"><span class="crayons-tag__prefix">#</span>oauth</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/openredirect"><span class="crayons-tag__prefix">#</span>openredirect</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/authentication"><span class="crayons-tag__prefix">#</span>authentication</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/blue_byte/easy-bug-open-redirect-on-oauth-20-redirecturi-param-2h8f#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Easy Bug: Open-Redirect on OAuth 2.0 redirect_uri param"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a1ovguvxmidjg559yxuf723abbkxzus3" class="crayons-icon"><title id="a1ovguvxmidjg559yxuf723abbkxzus3">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 1 min read </small> <button type="button" id="article-save-button-2288482" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2288482" data-article-author-id="2735090" aria-label="Save post Easy Bug: Open-Redirect on OAuth 2.0 redirect_uri param to reading list" title="Save post Easy Bug: Open-Redirect on OAuth 2.0 redirect_uri param to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2287274" data-content-user-id="1384536"> <a href="https://dev.to/imhardik/implementing-authentication-using-jwt-and-passportjs-a-beginners-guide-ckf" aria-labelledby="article-link-2287274" class="crayons-story__hidden-navigation-link">Implementing Authentication Using JWT and Passport.js: A Beginner’s Guide</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/imhardik" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1384536%2F416e1958-7ec7-43e7-93b6-c5e3ab6b4f02.jpg" alt="imhardik profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/imhardik" class="crayons-story__secondary fw-medium m:hidden"> Hardik Gayner </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2287274" aria-controls="story-author-preview-content-2287274" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Hardik Gayner profile details"> Hardik Gayner </button> <div id="story-author-preview-content-2287274" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/imhardik" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1384536%2F416e1958-7ec7-43e7-93b6-c5e3ab6b4f02.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Hardik Gayner </span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":1384536,"className":"User","name":"Hardik Gayner "}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="1384536"></div> </div> </div> </div> </div> <a href="https://dev.to/imhardik/implementing-authentication-using-jwt-and-passportjs-a-beginners-guide-ckf" class="crayons-story__tertiary fs-xs"><time datetime="2025-02-19T08:06:08Z">Feb 19</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1739952368"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/imhardik/implementing-authentication-using-jwt-and-passportjs-a-beginners-guide-ckf" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftrzyb2nbdowfqrd2y7zj.jpg" id="article-link-2287274"> Implementing Authentication Using JWT and Passport.js: A Beginner’s Guide </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(86, 39, 101, 0.10); --tag-prefix: #562765; --tag-bg-hover: rgba(86, 39, 101, 0.10); --tag-prefix-hover: #562765; " href="/t/webdev"><span class="crayons-tag__prefix">#</span>webdev</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/authentication"><span class="crayons-tag__prefix">#</span>authentication</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(247, 223, 30, 0.10); --tag-prefix: #f7df1e; --tag-bg-hover: rgba(247, 223, 30, 0.10); --tag-prefix-hover: #f7df1e; " href="/t/javascript"><span class="crayons-tag__prefix">#</span>javascript</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/mern"><span class="crayons-tag__prefix">#</span>mern</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/imhardik/implementing-authentication-using-jwt-and-passportjs-a-beginners-guide-ckf#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Implementing Authentication Using JWT and Passport.js: A Beginner’s Guide"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="ak9gk7w41cniveq8vas0wsmv2zxns862" class="crayons-icon"><title id="ak9gk7w41cniveq8vas0wsmv2zxns862">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 3 min read </small> <button type="button" id="article-save-button-2287274" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2287274" data-article-author-id="1384536" aria-label="Save post Implementing Authentication Using JWT and Passport.js: A Beginner’s Guide to reading list" title="Save post Implementing Authentication Using JWT and Passport.js: A Beginner’s Guide to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2282449" data-content-user-id="242275"> <a href="https://dev.to/debajit13/secure-your-react-app-with-firebase-auth-4a6o" aria-labelledby="article-link-2282449" class="crayons-story__hidden-navigation-link">Secure your React app with Firebase Auth</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/debajit13" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F242275%2Fee408bc3-25e3-41a7-87aa-d0897562ed5e.jpg" alt="debajit13 profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/debajit13" class="crayons-story__secondary fw-medium m:hidden"> Debajit Mallick </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2282449" aria-controls="story-author-preview-content-2282449" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Debajit Mallick profile details"> Debajit Mallick </button> <div id="story-author-preview-content-2282449" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/debajit13" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F242275%2Fee408bc3-25e3-41a7-87aa-d0897562ed5e.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Debajit Mallick</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":242275,"className":"User","name":"Debajit Mallick"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="242275"></div> </div> </div> </div> </div> <a href="https://dev.to/debajit13/secure-your-react-app-with-firebase-auth-4a6o" class="crayons-story__tertiary fs-xs"><time datetime="2025-02-16T16:24:06Z">Feb 16</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1739723046"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/debajit13/secure-your-react-app-with-firebase-auth-4a6o" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftlkldimz71ut4gsypy8w.png" id="article-link-2282449"> Secure your React app with Firebase Auth </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(3, 155, 229, 0.10); --tag-prefix: #039be5; --tag-bg-hover: rgba(3, 155, 229, 0.10); --tag-prefix-hover: #039be5; " href="/t/firebase"><span class="crayons-tag__prefix">#</span>firebase</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(255, 51, 224, 0.10); --tag-prefix: #ff33e0; --tag-bg-hover: rgba(255, 51, 224, 0.10); --tag-prefix-hover: #ff33e0; " href="/t/frontend"><span class="crayons-tag__prefix">#</span>frontend</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/authentication"><span class="crayons-tag__prefix">#</span>authentication</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(86, 39, 101, 0.10); --tag-prefix: #562765; --tag-bg-hover: rgba(86, 39, 101, 0.10); --tag-prefix-hover: #562765; " href="/t/webdev"><span class="crayons-tag__prefix">#</span>webdev</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/debajit13/secure-your-react-app-with-firebase-auth-4a6o#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Secure your React app with Firebase Auth"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="ape40j2jpsnp69pa0f6rkk1j8v84mpx1" class="crayons-icon"><title id="ape40j2jpsnp69pa0f6rkk1j8v84mpx1">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 3 min read </small> <button type="button" id="article-save-button-2282449" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2282449" data-article-author-id="242275" aria-label="Save post Secure your React app with Firebase Auth to reading list" title="Save post Secure your React app with Firebase Auth to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2264625" data-content-user-id="2302676"> <a href="https://dev.to/siraw_tadesse/how-to-implement-email-verification-in-laravel-without-user-registration-7f2" aria-labelledby="article-link-2264625" class="crayons-story__hidden-navigation-link">How to Implement Email Verification in Laravel Without User Registration?</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/siraw_tadesse" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2302676%2Fdb4ab8cd-c854-428a-bbc4-f479cddefa25.jpg" alt="siraw_tadesse profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/siraw_tadesse" class="crayons-story__secondary fw-medium m:hidden"> Siraw Tadesse </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2264625" aria-controls="story-author-preview-content-2264625" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Siraw Tadesse profile details"> Siraw Tadesse </button> <div id="story-author-preview-content-2264625" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/siraw_tadesse" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2302676%2Fdb4ab8cd-c854-428a-bbc4-f479cddefa25.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Siraw Tadesse</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2302676,"className":"User","name":"Siraw Tadesse"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2302676"></div> </div> </div> </div> </div> <a href="https://dev.to/siraw_tadesse/how-to-implement-email-verification-in-laravel-without-user-registration-7f2" class="crayons-story__tertiary fs-xs"><time datetime="2025-02-07T14:09:00Z">Feb 7</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1738937340"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/siraw_tadesse/how-to-implement-email-verification-in-laravel-without-user-registration-7f2" data-preload-image="" id="article-link-2264625"> How to Implement Email Verification in Laravel Without User Registration? </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(220, 45, 23, 0.10); --tag-prefix: #dc2d17; --tag-bg-hover: rgba(220, 45, 23, 0.10); --tag-prefix-hover: #dc2d17; " href="/t/laravel"><span class="crayons-tag__prefix">#</span>laravel</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(35, 161, 170, 0.10); --tag-prefix: #23A1AA; --tag-bg-hover: rgba(35, 161, 170, 0.10); --tag-prefix-hover: #23A1AA; " href="/t/php"><span class="crayons-tag__prefix">#</span>php</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/authentication"><span class="crayons-tag__prefix">#</span>authentication</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/emailverification"><span class="crayons-tag__prefix">#</span>emailverification</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/siraw_tadesse/how-to-implement-email-verification-in-laravel-without-user-registration-7f2#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - How to Implement Email Verification in Laravel Without User Registration?"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="arr81bxo2wydvawxeu3pbcbckkgdxmw6" class="crayons-icon"><title id="arr81bxo2wydvawxeu3pbcbckkgdxmw6">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 1 min read </small> <button type="button" id="article-save-button-2264625" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2264625" data-article-author-id="2302676" aria-label="Save post How to Implement Email Verification in Laravel Without User Registration? to reading list" title="Save post How to Implement Email Verification in Laravel Without User Registration? to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2276162" data-content-user-id="967833"> <a href="https://dev.to/sahildahekar/the-evolution-of-authentication-from-passwords-to-passkeys-2g5d" aria-labelledby="article-link-2276162" class="crayons-story__hidden-navigation-link">The Evolution of Authentication : From Passwords to Passkeys</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/sahildahekar" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F967833%2F501bf5d7-1454-46ac-9b2e-0e43125670a6.png" alt="sahildahekar profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/sahildahekar" class="crayons-story__secondary fw-medium m:hidden"> Sahil Dahekar </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2276162" aria-controls="story-author-preview-content-2276162" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Sahil Dahekar profile details"> Sahil Dahekar </button> <div id="story-author-preview-content-2276162" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/sahildahekar" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F967833%2F501bf5d7-1454-46ac-9b2e-0e43125670a6.png" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Sahil Dahekar</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":967833,"className":"User","name":"Sahil Dahekar"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="967833"></div> </div> </div> </div> </div> <a href="https://dev.to/sahildahekar/the-evolution-of-authentication-from-passwords-to-passkeys-2g5d" class="crayons-story__tertiary fs-xs"><time datetime="2025-02-15T08:38:09Z">Feb 15</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1739608689"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/sahildahekar/the-evolution-of-authentication-from-passwords-to-passkeys-2g5d" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fop3hsmiczg7h505sdchh.png" id="article-link-2276162"> The Evolution of Authentication : From Passwords to Passkeys </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/authentication"><span class="crayons-tag__prefix">#</span>authentication</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(27, 172, 128, 0.10); --tag-prefix: #1bac80; --tag-bg-hover: rgba(27, 172, 128, 0.10); --tag-prefix-hover: #1bac80; " href="/t/security"><span class="crayons-tag__prefix">#</span>security</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/passkeys"><span class="crayons-tag__prefix">#</span>passkeys</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(137, 6, 6, 0.10); --tag-prefix: #890606; --tag-bg-hover: rgba(137, 6, 6, 0.10); --tag-prefix-hover: #890606; " href="/t/programming"><span class="crayons-tag__prefix">#</span>programming</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/sahildahekar/the-evolution-of-authentication-from-passwords-to-passkeys-2g5d" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2276162" aria-label="Add a comment to post - The Evolution of Authentication : From Passwords to Passkeys"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">6<span class="hidden s:inline"> reactions</span></span> </div> </a> <a href="https://dev.to/sahildahekar/the-evolution-of-authentication-from-passwords-to-passkeys-2g5d#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - The Evolution of Authentication : From Passwords to Passkeys"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aoqaklvqkcj3itazpbv2g9xryol390s1" class="crayons-icon"><title id="aoqaklvqkcj3itazpbv2g9xryol390s1">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> 1<span class="hidden s:inline"> comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 8 min read </small> <button type="button" id="article-save-button-2276162" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2276162" data-article-author-id="967833" aria-label="Save post The Evolution of Authentication : From Passwords to Passkeys to reading list" title="Save post The Evolution of Authentication : From Passwords to Passkeys to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2230906" data-content-user-id="2741704"> <a href="https://dev.to/arish_khan_efd51766053f80/rails-8-authentication-generator-154m" aria-labelledby="article-link-2230906" class="crayons-story__hidden-navigation-link">Rails - 8 Authentication Generator</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/arish_khan_efd51766053f80" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2741704%2F743d637f-49ad-4af3-b57a-8a0c3709fe57.png" alt="arish_khan_efd51766053f80 profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/arish_khan_efd51766053f80" class="crayons-story__secondary fw-medium m:hidden"> Arish Khan </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2230906" aria-controls="story-author-preview-content-2230906" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Arish Khan profile details"> Arish Khan </button> <div id="story-author-preview-content-2230906" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/arish_khan_efd51766053f80" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2741704%2F743d637f-49ad-4af3-b57a-8a0c3709fe57.png" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Arish Khan</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2741704,"className":"User","name":"Arish Khan"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2741704"></div> </div> </div> </div> </div> <a href="https://dev.to/arish_khan_efd51766053f80/rails-8-authentication-generator-154m" class="crayons-story__tertiary fs-xs"><time datetime="2025-01-21T11:39:44Z">Jan 21</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1737459584"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/arish_khan_efd51766053f80/rails-8-authentication-generator-154m" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3nag6rf5io0oew8fvfij.jpg" id="article-link-2230906"> Rails - 8 Authentication Generator </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(204, 0, 0, 0.10); --tag-prefix: #cc0000; --tag-bg-hover: rgba(204, 0, 0, 0.10); --tag-prefix-hover: #cc0000; " href="/t/rails"><span class="crayons-tag__prefix">#</span>rails</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/authentication"><span class="crayons-tag__prefix">#</span>authentication</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(86, 39, 101, 0.10); --tag-prefix: #562765; --tag-bg-hover: rgba(86, 39, 101, 0.10); --tag-prefix-hover: #562765; " href="/t/webdev"><span class="crayons-tag__prefix">#</span>webdev</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/arish_khan_efd51766053f80/rails-8-authentication-generator-154m#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Rails - 8 Authentication Generator"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="alvdzc7125l8f7ohe3b9sq3gqs2jhn5a" class="crayons-icon"><title id="alvdzc7125l8f7ohe3b9sq3gqs2jhn5a">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 4 min read </small> <button type="button" id="article-save-button-2230906" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2230906" data-article-author-id="2741704" aria-label="Save post Rails - 8 Authentication Generator to reading list" title="Save post Rails - 8 Authentication Generator to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2222509" data-content-user-id="2231001"> <a href="https://dev.to/authaction/introducing-passkey-authentication-in-authaction-a-new-era-of-passwordless-security-49j8" aria-labelledby="article-link-2222509" class="crayons-story__hidden-navigation-link">Introducing Passkey Authentication in AuthAction: A New Era of Passwordless Security!</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/authaction"> <img alt="AuthAction logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9742%2Fd89a0bd3-9c3c-4dcd-8021-ccc34db00b8a.jpg" class="crayons-logo__image" loading="lazy" /> </a> <a href="/authaction-dev" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2231001%2F25c09ab2-85a6-4b19-b7d7-8b5e5040a591.jpg" alt="authaction-dev profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/authaction-dev" class="crayons-story__secondary fw-medium m:hidden"> AuthAction Developer </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2222509" aria-controls="story-author-preview-content-2222509" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="AuthAction Developer profile details"> AuthAction Developer </button> <div id="story-author-preview-content-2222509" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/authaction-dev" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2231001%2F25c09ab2-85a6-4b19-b7d7-8b5e5040a591.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">AuthAction Developer</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2231001,"className":"User","name":"AuthAction Developer"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2231001"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/authaction" class="crayons-story__secondary fw-medium">AuthAction</a> </span> </div> <a href="https://dev.to/authaction/introducing-passkey-authentication-in-authaction-a-new-era-of-passwordless-security-49j8" class="crayons-story__tertiary fs-xs"><time datetime="2025-01-18T13:21:53Z">Jan 18</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1737206513"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/authaction/introducing-passkey-authentication-in-authaction-a-new-era-of-passwordless-security-49j8" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhcmpxd2gy11rgnv9vt6u.png" id="article-link-2222509"> Introducing Passkey Authentication in AuthAction: A New Era of Passwordless Security! </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/passkeys"><span class="crayons-tag__prefix">#</span>passkeys</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/authentication"><span class="crayons-tag__prefix">#</span>authentication</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(86, 39, 101, 0.10); --tag-prefix: #562765; --tag-bg-hover: rgba(86, 39, 101, 0.10); --tag-prefix-hover: #562765; " href="/t/webdev"><span class="crayons-tag__prefix">#</span>webdev</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/authaction"><span class="crayons-tag__prefix">#</span>authaction</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/authaction/introducing-passkey-authentication-in-authaction-a-new-era-of-passwordless-security-49j8#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Introducing Passkey Authentication in AuthAction: A New Era of Passwordless Security!"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="ad4yctip8zd94dwmkc1usn9g2tti5z58" class="crayons-icon"><title id="ad4yctip8zd94dwmkc1usn9g2tti5z58">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 2 min read </small> <button type="button" id="article-save-button-2222509" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2222509" data-article-author-id="2231001" aria-label="Save post Introducing Passkey Authentication in AuthAction: A New Era of Passwordless Security! to reading list" title="Save post Introducing Passkey Authentication in AuthAction: A New Era of Passwordless Security! to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2197774" data-content-user-id="801780"> <a href="https://dev.to/youneszn/the-speakeasy-door-to-your-network-port-knocking-1-5a99" aria-labelledby="article-link-2197774" class="crayons-story__hidden-navigation-link">The Speakeasy Door to Your Network - Port Knocking (1)</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/youneszn" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F801780%2F5d7aac54-4bc7-42cf-a890-f2f38e91ee7f.jpg" alt="youneszn profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/youneszn" class="crayons-story__secondary fw-medium m:hidden"> YounesZn </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2197774" aria-controls="story-author-preview-content-2197774" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="YounesZn profile details"> YounesZn </button> <div id="story-author-preview-content-2197774" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/youneszn" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F801780%2F5d7aac54-4bc7-42cf-a890-f2f38e91ee7f.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">YounesZn</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":801780,"className":"User","name":"YounesZn"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="801780"></div> </div> </div> </div> </div> <a href="https://dev.to/youneszn/the-speakeasy-door-to-your-network-port-knocking-1-5a99" class="crayons-story__tertiary fs-xs"><time datetime="2025-01-09T18:54:33Z">Jan 9</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1736448873"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/youneszn/the-speakeasy-door-to-your-network-port-knocking-1-5a99" data-preload-image="" id="article-link-2197774"> The Speakeasy Door to Your Network - Port Knocking (1) </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(27, 172, 128, 0.10); --tag-prefix: #1bac80; --tag-bg-hover: rgba(27, 172, 128, 0.10); --tag-prefix-hover: #1bac80; " href="/t/security"><span class="crayons-tag__prefix">#</span>security</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(119, 194, 127, 0.10); --tag-prefix: #77c27f; --tag-bg-hover: rgba(119, 194, 127, 0.10); --tag-prefix-hover: #77c27f; " href="/t/networking"><span class="crayons-tag__prefix">#</span>networking</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/authentication"><span class="crayons-tag__prefix">#</span>authentication</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/youneszn/the-speakeasy-door-to-your-network-port-knocking-1-5a99#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - The Speakeasy Door to Your Network - Port Knocking (1)"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aeyck9p2z3rvc7u7471l50ycfedqbtk7" class="crayons-icon"><title id="aeyck9p2z3rvc7u7471l50ycfedqbtk7">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 3 min read </small> <button type="button" id="article-save-button-2197774" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2197774" data-article-author-id="801780" aria-label="Save post The Speakeasy Door to Your Network - Port Knocking (1) to reading list" title="Save post The Speakeasy Door to Your Network - Port Knocking (1) to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2197777" data-content-user-id="801780"> <a href="https://dev.to/youneszn/the-speakeasy-door-to-your-network-port-knocking-2-j3f" aria-labelledby="article-link-2197777" class="crayons-story__hidden-navigation-link">The Speakeasy Door to Your Network - Port Knocking (2)</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/youneszn" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F801780%2F5d7aac54-4bc7-42cf-a890-f2f38e91ee7f.jpg" alt="youneszn profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/youneszn" class="crayons-story__secondary fw-medium m:hidden"> YounesZn </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2197777" aria-controls="story-author-preview-content-2197777" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="YounesZn profile details"> YounesZn </button> <div id="story-author-preview-content-2197777" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/youneszn" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F801780%2F5d7aac54-4bc7-42cf-a890-f2f38e91ee7f.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">YounesZn</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":801780,"className":"User","name":"YounesZn"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="801780"></div> </div> </div> </div> </div> <a href="https://dev.to/youneszn/the-speakeasy-door-to-your-network-port-knocking-2-j3f" class="crayons-story__tertiary fs-xs"><time datetime="2025-01-09T18:55:45Z">Jan 9</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1736448945"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/youneszn/the-speakeasy-door-to-your-network-port-knocking-2-j3f" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnymi6phvbkgoq3emkzib.jpeg" id="article-link-2197777"> The Speakeasy Door to Your Network - Port Knocking (2) </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(27, 172, 128, 0.10); --tag-prefix: #1bac80; --tag-bg-hover: rgba(27, 172, 128, 0.10); --tag-prefix-hover: #1bac80; " href="/t/security"><span class="crayons-tag__prefix">#</span>security</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(119, 194, 127, 0.10); --tag-prefix: #77c27f; --tag-bg-hover: rgba(119, 194, 127, 0.10); --tag-prefix-hover: #77c27f; " href="/t/networking"><span class="crayons-tag__prefix">#</span>networking</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/authentication"><span class="crayons-tag__prefix">#</span>authentication</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(33, 43, 58, 0.10); --tag-prefix: #212b3a; --tag-bg-hover: rgba(33, 43, 58, 0.10); --tag-prefix-hover: #212b3a; " href="/t/aws"><span class="crayons-tag__prefix">#</span>aws</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/youneszn/the-speakeasy-door-to-your-network-port-knocking-2-j3f#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - The Speakeasy Door to Your Network - Port Knocking (2)"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="ajy51psijvquw4cja2a9cvzjmel8e94p" class="crayons-icon"><title id="ajy51psijvquw4cja2a9cvzjmel8e94p">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 4 min read </small> <button type="button" id="article-save-button-2197777" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2197777" data-article-author-id="801780" aria-label="Save post The Speakeasy Door to Your Network - Port Knocking (2) to reading list" title="Save post The Speakeasy Door to Your Network - Port Knocking (2) to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2273453" data-content-user-id="491251"> <a href="https://dev.to/vimaltwit/combining-azure-easy-auth-and-microsoftidentityweb-for-api-authentication-1p5" aria-labelledby="article-link-2273453" class="crayons-story__hidden-navigation-link">Securing Web API using Azure Easy Auth and Microsoft.Identity.Web</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/vimaltwit" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F491251%2Fb4b64054-dbb7-4675-97a0-45c283b560a7.JPG" alt="vimaltwit profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/vimaltwit" class="crayons-story__secondary fw-medium m:hidden"> Vimal </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2273453" aria-controls="story-author-preview-content-2273453" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Vimal profile details"> Vimal </button> <div id="story-author-preview-content-2273453" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/vimaltwit" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F491251%2Fb4b64054-dbb7-4675-97a0-45c283b560a7.JPG" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Vimal</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":491251,"className":"User","name":"Vimal"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="491251"></div> </div> </div> </div> </div> <a href="https://dev.to/vimaltwit/combining-azure-easy-auth-and-microsoftidentityweb-for-api-authentication-1p5" class="crayons-story__tertiary fs-xs"><time datetime="2025-02-12T14:22:39Z">Feb 12</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1739370159"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/vimaltwit/combining-azure-easy-auth-and-microsoftidentityweb-for-api-authentication-1p5" data-preload-image="" id="article-link-2273453"> Securing Web API using Azure Easy Auth and Microsoft.Identity.Web </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/easyauth"><span class="crayons-tag__prefix">#</span>easyauth</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/appservice"><span class="crayons-tag__prefix">#</span>appservice</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/dotnetcore"><span class="crayons-tag__prefix">#</span>dotnetcore</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/authentication"><span class="crayons-tag__prefix">#</span>authentication</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/vimaltwit/combining-azure-easy-auth-and-microsoftidentityweb-for-api-authentication-1p5#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Securing Web API using Azure Easy Auth and Microsoft.Identity.Web"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a305r0ilffto6s26kd03qoltgpi8i79a" class="crayons-icon"><title id="a305r0ilffto6s26kd03qoltgpi8i79a">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 4 min read </small> <button type="button" id="article-save-button-2273453" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2273453" data-article-author-id="491251" aria-label="Save post Securing Web API using Azure Easy Auth and Microsoft.Identity.Web to reading list" title="Save post Securing Web API using Azure Easy Auth and Microsoft.Identity.Web to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2195745" data-content-user-id="2663092"> <a href="https://dev.to/azaharuddinruhit/introduction-to-3d-secure-enhancing-online-payment-security-2773" aria-labelledby="article-link-2195745" class="crayons-story__hidden-navigation-link">Introduction to 3D Secure: Enhancing Online Payment Security</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/azaharuddinruhit" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2663092%2Fd3bdc4ae-e41e-43ad-b430-f23993af2d6c.png" alt="azaharuddinruhit profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/azaharuddinruhit" class="crayons-story__secondary fw-medium m:hidden"> Azaharuddin Ruhit </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2195745" aria-controls="story-author-preview-content-2195745" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Azaharuddin Ruhit profile details"> Azaharuddin Ruhit </button> <div id="story-author-preview-content-2195745" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/azaharuddinruhit" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2663092%2Fd3bdc4ae-e41e-43ad-b430-f23993af2d6c.png" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Azaharuddin Ruhit</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2663092,"className":"User","name":"Azaharuddin Ruhit"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2663092"></div> </div> </div> </div> </div> <a href="https://dev.to/azaharuddinruhit/introduction-to-3d-secure-enhancing-online-payment-security-2773" class="crayons-story__tertiary fs-xs"><time datetime="2025-01-08T12:04:21Z">Jan 8</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1736337861"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/azaharuddinruhit/introduction-to-3d-secure-enhancing-online-payment-security-2773" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwrgrdl3pm65cdyldiotf.jpg" id="article-link-2195745"> Introduction to 3D Secure: Enhancing Online Payment Security </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/payment"><span class="crayons-tag__prefix">#</span>payment</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/3ds"><span class="crayons-tag__prefix">#</span>3ds</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/authentication"><span class="crayons-tag__prefix">#</span>authentication</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/fintech"><span class="crayons-tag__prefix">#</span>fintech</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/azaharuddinruhit/introduction-to-3d-secure-enhancing-online-payment-security-2773#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Introduction to 3D Secure: Enhancing Online Payment Security"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="an1jykavx74dzjddpisbr30lwwq124r9" class="crayons-icon"><title id="an1jykavx74dzjddpisbr30lwwq124r9">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 4 min read </small> <button type="button" id="article-save-button-2195745" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2195745" data-article-author-id="2663092" aria-label="Save post Introduction to 3D Secure: Enhancing Online Payment Security to reading list" title="Save post Introduction to 3D Secure: Enhancing Online Payment Security to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2270865" data-content-user-id="2845949"> <a href="https://dev.to/artem_turlenko/using-rendercom-for-github-oauth-integration-f2m" aria-labelledby="article-link-2270865" class="crayons-story__hidden-navigation-link">👨💻 Using Render.com for GitHub OAuth Integration</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/artem_turlenko" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2845949%2F3ba98e1a-9c3b-4c0e-8af4-cf2c493652e9.png" alt="artem_turlenko profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/artem_turlenko" class="crayons-story__secondary fw-medium m:hidden"> Artem Turlenko </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2270865" aria-controls="story-author-preview-content-2270865" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Artem Turlenko profile details"> Artem Turlenko </button> <div id="story-author-preview-content-2270865" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/artem_turlenko" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2845949%2F3ba98e1a-9c3b-4c0e-8af4-cf2c493652e9.png" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Artem Turlenko</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2845949,"className":"User","name":"Artem Turlenko"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2845949"></div> </div> </div> </div> </div> <a href="https://dev.to/artem_turlenko/using-rendercom-for-github-oauth-integration-f2m" class="crayons-story__tertiary fs-xs"><time datetime="2025-02-11T08:43:56Z">Feb 11</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1739263436"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/artem_turlenko/using-rendercom-for-github-oauth-integration-f2m" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxdjvqhezo4thx17w9qz5.png" id="article-link-2270865"> 👨💻 Using Render.com for GitHub OAuth Integration </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/authentication"><span class="crayons-tag__prefix">#</span>authentication</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/oauth"><span class="crayons-tag__prefix">#</span>oauth</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(61, 136, 54, 0.10); --tag-prefix: #3d8836; --tag-bg-hover: rgba(61, 136, 54, 0.10); --tag-prefix-hover: #3d8836; " href="/t/node"><span class="crayons-tag__prefix">#</span>node</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/backend"><span class="crayons-tag__prefix">#</span>backend</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/artem_turlenko/using-rendercom-for-github-oauth-integration-f2m#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - 👨💻 Using Render.com for GitHub OAuth Integration"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="anleqok8gx1sguyjyy3i6i44yvje5zwt" class="crayons-icon"><title id="anleqok8gx1sguyjyy3i6i44yvje5zwt">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 2 min read </small> <button type="button" id="article-save-button-2270865" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2270865" data-article-author-id="2845949" aria-label="Save post 👨💻 Using Render.com for GitHub OAuth Integration to reading list" title="Save post 👨💻 Using Render.com for GitHub OAuth Integration to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2268142" data-content-user-id="34101"> <a href="https://dev.to/aaronksaunders/authentication-with-payload-cms-and-nextjs-client-vs-server-approaches-c5a" aria-labelledby="article-link-2268142" class="crayons-story__hidden-navigation-link">Authentication with Payload CMS and Next.js: Client vs Server Approaches</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/aaronksaunders" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F34101%2Fe15ded5e-f270-4628-a585-17422e279bb9.jpeg" alt="aaronksaunders profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/aaronksaunders" class="crayons-story__secondary fw-medium m:hidden"> Aaron K Saunders </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2268142" aria-controls="story-author-preview-content-2268142" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Aaron K Saunders profile details"> Aaron K Saunders </button> <div id="story-author-preview-content-2268142" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/aaronksaunders" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F34101%2Fe15ded5e-f270-4628-a585-17422e279bb9.jpeg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Aaron K Saunders</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":34101,"className":"User","name":"Aaron K Saunders"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="34101"></div> </div> </div> </div> </div> <a href="https://dev.to/aaronksaunders/authentication-with-payload-cms-and-nextjs-client-vs-server-approaches-c5a" class="crayons-story__tertiary fs-xs"><time datetime="2025-02-11T02:14:11Z">Feb 11</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1739240051"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/aaronksaunders/authentication-with-payload-cms-and-nextjs-client-vs-server-approaches-c5a" data-preload-image="" id="article-link-2268142"> Authentication with Payload CMS and Next.js: Client vs Server Approaches </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/payloadcms"><span class="crayons-tag__prefix">#</span>payloadcms</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(0, 0, 0, 0.10); --tag-prefix: #000000; --tag-bg-hover: rgba(0, 0, 0, 0.10); --tag-prefix-hover: #000000; " href="/t/nextjs"><span class="crayons-tag__prefix">#</span>nextjs</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/authentication"><span class="crayons-tag__prefix">#</span>authentication</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(86, 39, 101, 0.10); --tag-prefix: #562765; --tag-bg-hover: rgba(86, 39, 101, 0.10); --tag-prefix-hover: #562765; " href="/t/webdev"><span class="crayons-tag__prefix">#</span>webdev</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/aaronksaunders/authentication-with-payload-cms-and-nextjs-client-vs-server-approaches-c5a" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2268142" aria-label="Add a comment to post - Authentication with Payload CMS and Next.js: Client vs Server Approaches"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">1<span class="hidden s:inline"> reaction</span></span> </div> </a> <a href="https://dev.to/aaronksaunders/authentication-with-payload-cms-and-nextjs-client-vs-server-approaches-c5a#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Authentication with Payload CMS and Next.js: Client vs Server Approaches"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="akzta0az6is7xgw4h5gxbonrjdwg5zgi" class="crayons-icon"><title id="akzta0az6is7xgw4h5gxbonrjdwg5zgi">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 5 min read </small> <button type="button" id="article-save-button-2268142" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2268142" data-article-author-id="34101" aria-label="Save post Authentication with Payload CMS and Next.js: Client vs Server Approaches to reading list" title="Save post Authentication with Payload CMS and Next.js: Client vs Server Approaches to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2147933" data-content-user-id="1041276"> <a href="https://dev.to/vdelitz/ensuring-successful-passkey-deployment-testing-strategies-for-enterprises-468b" aria-labelledby="article-link-2147933" class="crayons-story__hidden-navigation-link">Ensuring Successful Passkey Deployment: Testing Strategies for Enterprises</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/vdelitz" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1041276%2F3b6dadfd-e1b9-47ad-87ec-d19a9cbcafe2.jpg" alt="vdelitz profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/vdelitz" class="crayons-story__secondary fw-medium m:hidden"> vdelitz </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2147933" aria-controls="story-author-preview-content-2147933" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="vdelitz profile details"> vdelitz </button> <div id="story-author-preview-content-2147933" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/vdelitz" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1041276%2F3b6dadfd-e1b9-47ad-87ec-d19a9cbcafe2.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">vdelitz</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":1041276,"className":"User","name":"vdelitz"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="1041276"></div> </div> </div> </div> </div> <a href="https://dev.to/vdelitz/ensuring-successful-passkey-deployment-testing-strategies-for-enterprises-468b" class="crayons-story__tertiary fs-xs"><time datetime="2025-01-07T08:40:00Z">Jan 7</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1736239200"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/vdelitz/ensuring-successful-passkey-deployment-testing-strategies-for-enterprises-468b" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1h4n4lz72x7ylogiuzjf.jpg" id="article-link-2147933"> Ensuring Successful Passkey Deployment: Testing Strategies for Enterprises </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/passkeys"><span class="crayons-tag__prefix">#</span>passkeys</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(1, 155, 101, 0.10); --tag-prefix: #019b65; --tag-bg-hover: rgba(1, 155, 101, 0.10); --tag-prefix-hover: #019b65; " href="/t/testing"><span class="crayons-tag__prefix">#</span>testing</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/authentication"><span class="crayons-tag__prefix">#</span>authentication</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(27, 172, 128, 0.10); --tag-prefix: #1bac80; --tag-bg-hover: rgba(27, 172, 128, 0.10); --tag-prefix-hover: #1bac80; " href="/t/security"><span class="crayons-tag__prefix">#</span>security</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/vdelitz/ensuring-successful-passkey-deployment-testing-strategies-for-enterprises-468b#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Ensuring Successful Passkey Deployment: Testing Strategies for Enterprises"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a91tzfly4lt99lpu8wp2kyozmcbp4bwv" class="crayons-icon"><title id="a91tzfly4lt99lpu8wp2kyozmcbp4bwv">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 2 min read </small> <button type="button" id="article-save-button-2147933" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2147933" data-article-author-id="1041276" aria-label="Save post Ensuring Successful Passkey Deployment: Testing Strategies for Enterprises to reading list" title="Save post Ensuring Successful Passkey Deployment: Testing Strategies for Enterprises to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2193025" data-content-user-id="313853"> <a href="https://dev.to/ebereplenty/learn-django-rest-framework-authentication-a-complete-step-by-step-python-guide-3ljk" aria-labelledby="article-link-2193025" class="crayons-story__hidden-navigation-link">Learn Django REST Framework Authentication: A Complete Step-by-Step Python Guide</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/ebereplenty" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F313853%2Fbd1fb518-fbb7-46f7-9b42-84e74adc75b7.png" alt="ebereplenty profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/ebereplenty" class="crayons-story__secondary fw-medium m:hidden"> NJOKU SAMSON EBERE </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2193025" aria-controls="story-author-preview-content-2193025" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="NJOKU SAMSON EBERE profile details"> NJOKU SAMSON EBERE </button> <div id="story-author-preview-content-2193025" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/ebereplenty" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F313853%2Fbd1fb518-fbb7-46f7-9b42-84e74adc75b7.png" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">NJOKU SAMSON EBERE</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":313853,"className":"User","name":"NJOKU SAMSON EBERE"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="313853"></div> </div> </div> </div> </div> <a href="https://dev.to/ebereplenty/learn-django-rest-framework-authentication-a-complete-step-by-step-python-guide-3ljk" class="crayons-story__tertiary fs-xs"><time datetime="2025-01-07T11:47:55Z">Jan 7</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1736250475"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/ebereplenty/learn-django-rest-framework-authentication-a-complete-step-by-step-python-guide-3ljk" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb8hea2pmwd7tmvmjsayz.png" id="article-link-2193025"> Learn Django REST Framework Authentication: A Complete Step-by-Step Python Guide </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/authentication"><span class="crayons-tag__prefix">#</span>authentication</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(16, 62, 46, 0.10); --tag-prefix: #103e2e; --tag-bg-hover: rgba(16, 62, 46, 0.10); --tag-prefix-hover: #103e2e; " href="/t/django"><span class="crayons-tag__prefix">#</span>django</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(30, 56, 187, 0.10); --tag-prefix: #1E38BB; --tag-bg-hover: rgba(30, 56, 187, 0.10); --tag-prefix-hover: #1E38BB; " href="/t/python"><span class="crayons-tag__prefix">#</span>python</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(86, 39, 101, 0.10); --tag-prefix: #562765; --tag-bg-hover: rgba(86, 39, 101, 0.10); --tag-prefix-hover: #562765; " href="/t/webdev"><span class="crayons-tag__prefix">#</span>webdev</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/ebereplenty/learn-django-rest-framework-authentication-a-complete-step-by-step-python-guide-3ljk" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2193025" aria-label="Add a comment to post - Learn Django REST Framework Authentication: A Complete Step-by-Step Python Guide"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">1<span class="hidden s:inline"> reaction</span></span> </div> </a> <a href="https://dev.to/ebereplenty/learn-django-rest-framework-authentication-a-complete-step-by-step-python-guide-3ljk#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Learn Django REST Framework Authentication: A Complete Step-by-Step Python Guide"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a8xe5t2txkkbxlhrqc9hl9g5x6k27egt" class="crayons-icon"><title id="a8xe5t2txkkbxlhrqc9hl9g5x6k27egt">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 2 min read </small> <button type="button" id="article-save-button-2193025" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2193025" data-article-author-id="313853" aria-label="Save post Learn Django REST Framework Authentication: A Complete Step-by-Step Python Guide to reading list" title="Save post Learn Django REST Framework Authentication: A Complete Step-by-Step Python Guide to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2246836" data-content-user-id="1325516"> <a href="https://dev.to/getambassador2024/authentication-vs-authorization-key-practices-for-building-secure-apis-1nf" aria-labelledby="article-link-2246836" class="crayons-story__hidden-navigation-link">Authentication vs Authorization: Key Practices for Building Secure APIs</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/getambassador2024" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1325516%2F1acc0f0a-b48a-4ea0-8475-367897f7d7de.png" alt="getambassador2024 profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/getambassador2024" class="crayons-story__secondary fw-medium m:hidden"> Ambassador </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2246836" aria-controls="story-author-preview-content-2246836" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Ambassador profile details"> Ambassador </button> <div id="story-author-preview-content-2246836" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/getambassador2024" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1325516%2F1acc0f0a-b48a-4ea0-8475-367897f7d7de.png" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Ambassador</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":1325516,"className":"User","name":"Ambassador"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="1325516"></div> </div> </div> </div> </div> <a href="https://dev.to/getambassador2024/authentication-vs-authorization-key-practices-for-building-secure-apis-1nf" class="crayons-story__tertiary fs-xs"><time datetime="2025-01-29T07:00:00Z">Jan 29</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1738134000"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/getambassador2024/authentication-vs-authorization-key-practices-for-building-secure-apis-1nf" data-preload-image="" id="article-link-2246836"> Authentication vs Authorization: Key Practices for Building Secure APIs </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/authentication"><span class="crayons-tag__prefix">#</span>authentication</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/authorization"><span class="crayons-tag__prefix">#</span>authorization</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/getambassador2024/authentication-vs-authorization-key-practices-for-building-secure-apis-1nf#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Authentication vs Authorization: Key Practices for Building Secure APIs"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a24jcst5cq9s0kyfgih95wp7i901j8xg" class="crayons-icon"><title id="a24jcst5cq9s0kyfgih95wp7i901j8xg">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 7 min read </small> <button type="button" id="article-save-button-2246836" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2246836" data-article-author-id="1325516" aria-label="Save post Authentication vs Authorization: Key Practices for Building Secure APIs to reading list" title="Save post Authentication vs Authorization: Key Practices for Building Secure APIs to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2264491" data-content-user-id="851790"> <a href="https://dev.to/rutvikmakvana4/how-to-get-api-keys-for-google-and-facebook-authentication--4nbk" aria-labelledby="article-link-2264491" class="crayons-story__hidden-navigation-link">How to Get API Keys for Google and Facebook Authentication ?</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/rutvikmakvana4" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F851790%2F723e14d8-db03-494a-83aa-52fb5b272857.jpg" alt="rutvikmakvana4 profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/rutvikmakvana4" class="crayons-story__secondary fw-medium m:hidden"> Rutvik Makvana </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2264491" aria-controls="story-author-preview-content-2264491" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Rutvik Makvana profile details"> Rutvik Makvana </button> <div id="story-author-preview-content-2264491" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/rutvikmakvana4" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F851790%2F723e14d8-db03-494a-83aa-52fb5b272857.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Rutvik Makvana</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":851790,"className":"User","name":"Rutvik Makvana"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="851790"></div> </div> </div> </div> </div> <a href="https://dev.to/rutvikmakvana4/how-to-get-api-keys-for-google-and-facebook-authentication--4nbk" class="crayons-story__tertiary fs-xs"><time datetime="2025-02-07T13:18:42Z">Feb 7</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1738934322"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/rutvikmakvana4/how-to-get-api-keys-for-google-and-facebook-authentication--4nbk" data-preload-image="" id="article-link-2264491"> How to Get API Keys for Google and Facebook Authentication ? </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(86, 39, 101, 0.10); --tag-prefix: #562765; --tag-bg-hover: rgba(86, 39, 101, 0.10); --tag-prefix-hover: #562765; " href="/t/webdev"><span class="crayons-tag__prefix">#</span>webdev</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/googleapi"><span class="crayons-tag__prefix">#</span>googleapi</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/facebookapi"><span class="crayons-tag__prefix">#</span>facebookapi</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/authentication"><span class="crayons-tag__prefix">#</span>authentication</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/rutvikmakvana4/how-to-get-api-keys-for-google-and-facebook-authentication--4nbk" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2264491" aria-label="Add a comment to post - How to Get API Keys for Google and Facebook Authentication ?"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">10<span class="hidden s:inline"> reactions</span></span> </div> </a> <a href="https://dev.to/rutvikmakvana4/how-to-get-api-keys-for-google-and-facebook-authentication--4nbk#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - How to Get API Keys for Google and Facebook Authentication ?"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a3brbbbj0r3olw50dc5luogktm04di2t" class="crayons-icon"><title id="a3brbbbj0r3olw50dc5luogktm04di2t">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 2 min read </small> <button type="button" id="article-save-button-2264491" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2264491" data-article-author-id="851790" aria-label="Save post How to Get API Keys for Google and Facebook Authentication ? to reading list" title="Save post How to Get API Keys for Google and Facebook Authentication ? to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2262230" data-content-user-id="2808475"> <a href="https://dev.to/ismail_lafhiel/understanding-aws-cognito-a-complete-guide-to-user-authentication-and-management-5b9d" aria-labelledby="article-link-2262230" class="crayons-story__hidden-navigation-link">Understanding AWS Cognito: A Complete Guide to User Authentication and Management</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/ismail_lafhiel" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2808475%2Feab4f61c-6d83-47c4-8dd1-f8bf262061e0.jpg" alt="ismail_lafhiel profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/ismail_lafhiel" class="crayons-story__secondary fw-medium m:hidden"> Ismail Lafhiel </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2262230" aria-controls="story-author-preview-content-2262230" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Ismail Lafhiel profile details"> Ismail Lafhiel </button> <div id="story-author-preview-content-2262230" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/ismail_lafhiel" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2808475%2Feab4f61c-6d83-47c4-8dd1-f8bf262061e0.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Ismail Lafhiel</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2808475,"className":"User","name":"Ismail Lafhiel"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2808475"></div> </div> </div> </div> </div> <a href="https://dev.to/ismail_lafhiel/understanding-aws-cognito-a-complete-guide-to-user-authentication-and-management-5b9d" class="crayons-story__tertiary fs-xs"><time datetime="2025-02-06T10:49:15Z">Feb 6</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1738838955"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/ismail_lafhiel/understanding-aws-cognito-a-complete-guide-to-user-authentication-and-management-5b9d" data-preload-image="" id="article-link-2262230"> Understanding AWS Cognito: A Complete Guide to User Authentication and Management </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(33, 43, 58, 0.10); --tag-prefix: #212b3a; --tag-bg-hover: rgba(33, 43, 58, 0.10); --tag-prefix-hover: #212b3a; " href="/t/aws"><span class="crayons-tag__prefix">#</span>aws</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(27, 172, 128, 0.10); --tag-prefix: #1bac80; --tag-bg-hover: rgba(27, 172, 128, 0.10); --tag-prefix-hover: #1bac80; " href="/t/security"><span class="crayons-tag__prefix">#</span>security</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(255, 153, 0, 0.10); --tag-prefix: #FF9900; --tag-bg-hover: rgba(255, 153, 0, 0.10); --tag-prefix-hover: #FF9900; " href="/t/cloud"><span class="crayons-tag__prefix">#</span>cloud</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/authentication"><span class="crayons-tag__prefix">#</span>authentication</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/ismail_lafhiel/understanding-aws-cognito-a-complete-guide-to-user-authentication-and-management-5b9d" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2262230" aria-label="Add a comment to post - Understanding AWS Cognito: A Complete Guide to User Authentication and Management"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">2<span class="hidden s:inline"> reactions</span></span> </div> </a> <a href="https://dev.to/ismail_lafhiel/understanding-aws-cognito-a-complete-guide-to-user-authentication-and-management-5b9d#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Understanding AWS Cognito: A Complete Guide to User Authentication and Management"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="ae07alm1s57gufi4jrc126wxolimg5vc" class="crayons-icon"><title id="ae07alm1s57gufi4jrc126wxolimg5vc">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> 1<span class="hidden s:inline"> comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 3 min read </small> <button type="button" id="article-save-button-2262230" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2262230" data-article-author-id="2808475" aria-label="Save post Understanding AWS Cognito: A Complete Guide to User Authentication and Management to reading list" title="Save post Understanding AWS Cognito: A Complete Guide to User Authentication and Management to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2187906" data-content-user-id="1893162"> <a href="https://dev.to/emaanidev/bulletproof-jwt-authentication-essential-security-patterns-for-production-apps-4c7g" aria-labelledby="article-link-2187906" class="crayons-story__hidden-navigation-link">Bulletproof JWT Authentication: Essential Security Patterns for Production Apps</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/emaanidev" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1893162%2F51d4cd8d-9f3b-4623-88d9-1cc6cee74329.jpg" alt="emaanidev profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/emaanidev" class="crayons-story__secondary fw-medium m:hidden"> Emaani Dev </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2187906" aria-controls="story-author-preview-content-2187906" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Emaani Dev profile details"> Emaani Dev </button> <div id="story-author-preview-content-2187906" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/emaanidev" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1893162%2F51d4cd8d-9f3b-4623-88d9-1cc6cee74329.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Emaani Dev</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":1893162,"className":"User","name":"Emaani Dev"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="1893162"></div> </div> </div> </div> </div> <a href="https://dev.to/emaanidev/bulletproof-jwt-authentication-essential-security-patterns-for-production-apps-4c7g" class="crayons-story__tertiary fs-xs"><time datetime="2025-01-03T18:12:57Z">Jan 3</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1735927977"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/emaanidev/bulletproof-jwt-authentication-essential-security-patterns-for-production-apps-4c7g" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdzqtq2zpu5otx86vzv36.jpg" id="article-link-2187906"> Bulletproof JWT Authentication: Essential Security Patterns for Production Apps </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(27, 172, 128, 0.10); --tag-prefix: #1bac80; --tag-bg-hover: rgba(27, 172, 128, 0.10); --tag-prefix-hover: #1bac80; " href="/t/security"><span class="crayons-tag__prefix">#</span>security</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(86, 39, 101, 0.10); --tag-prefix: #562765; --tag-bg-hover: rgba(86, 39, 101, 0.10); --tag-prefix-hover: #562765; " href="/t/webdev"><span class="crayons-tag__prefix">#</span>webdev</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/authentication"><span class="crayons-tag__prefix">#</span>authentication</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(61, 136, 54, 0.10); --tag-prefix: #3d8836; --tag-bg-hover: rgba(61, 136, 54, 0.10); --tag-prefix-hover: #3d8836; " href="/t/node"><span class="crayons-tag__prefix">#</span>node</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/emaanidev/bulletproof-jwt-authentication-essential-security-patterns-for-production-apps-4c7g#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Bulletproof JWT Authentication: Essential Security Patterns for Production Apps"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a93nhg8gcvn50ladodv8916mvce1kbvg" class="crayons-icon"><title id="a93nhg8gcvn50ladodv8916mvce1kbvg">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 2 min read </small> <button type="button" id="article-save-button-2187906" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2187906" data-article-author-id="1893162" aria-label="Save post Bulletproof JWT Authentication: Essential Security Patterns for Production Apps to reading list" title="Save post Bulletproof JWT Authentication: Essential Security Patterns for Production Apps to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2222647" data-content-user-id="37225"> <a href="https://dev.to/ruwhan/part-2-rails-8-authentication-but-with-jwt-2fd8" aria-labelledby="article-link-2222647" class="crayons-story__hidden-navigation-link">[Part 2] Rails 8 Authentication but with JWT</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/ruwhan" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F37225%2F834c8efb-4ad9-4f14-a0bc-91cd8e48ad43.jpeg" alt="ruwhan profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/ruwhan" class="crayons-story__secondary fw-medium m:hidden"> ruwhan </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2222647" aria-controls="story-author-preview-content-2222647" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="ruwhan profile details"> ruwhan </button> <div id="story-author-preview-content-2222647" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/ruwhan" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F37225%2F834c8efb-4ad9-4f14-a0bc-91cd8e48ad43.jpeg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">ruwhan</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":37225,"className":"User","name":"ruwhan"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="37225"></div> </div> </div> </div> </div> <a href="https://dev.to/ruwhan/part-2-rails-8-authentication-but-with-jwt-2fd8" class="crayons-story__tertiary fs-xs"><time datetime="2025-01-18T15:16:44Z">Jan 18</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1737213404"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/ruwhan/part-2-rails-8-authentication-but-with-jwt-2fd8" data-preload-image="" id="article-link-2222647"> [Part 2] Rails 8 Authentication but with JWT </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(204, 0, 0, 0.10); --tag-prefix: #cc0000; --tag-bg-hover: rgba(204, 0, 0, 0.10); --tag-prefix-hover: #cc0000; " href="/t/rails"><span class="crayons-tag__prefix">#</span>rails</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/jwt"><span class="crayons-tag__prefix">#</span>jwt</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/authentication"><span class="crayons-tag__prefix">#</span>authentication</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/ruwhan/part-2-rails-8-authentication-but-with-jwt-2fd8#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - [Part 2] Rails 8 Authentication but with JWT"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aoni04g5k0mh3uvc14yiw5p3g5drtqe0" class="crayons-icon"><title id="aoni04g5k0mh3uvc14yiw5p3g5drtqe0">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 2 min read </small> <button type="button" id="article-save-button-2222647" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2222647" data-article-author-id="37225" aria-label="Save post [Part 2] Rails 8 Authentication but with JWT to reading list" title="Save post [Part 2] Rails 8 Authentication but with JWT to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2192708" data-content-user-id="823697"> <a href="https://dev.to/envitab/building-an-attendance-system-powered-by-face-recognition-using-react-and-faceio-15a1" aria-labelledby="article-link-2192708" class="crayons-story__hidden-navigation-link">Building an Attendance System Powered by Face Recognition Using React and FACEIO</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/envitab" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F823697%2F01838b0b-d454-4382-ad1b-75d036ea50dd.jpg" alt="envitab profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/envitab" class="crayons-story__secondary fw-medium m:hidden"> Ekemini Samuel </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2192708" aria-controls="story-author-preview-content-2192708" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Ekemini Samuel profile details"> Ekemini Samuel </button> <div id="story-author-preview-content-2192708" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/envitab" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F823697%2F01838b0b-d454-4382-ad1b-75d036ea50dd.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Ekemini Samuel</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":823697,"className":"User","name":"Ekemini Samuel"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="823697"></div> </div> </div> </div> </div> <a href="https://dev.to/envitab/building-an-attendance-system-powered-by-face-recognition-using-react-and-faceio-15a1" class="crayons-story__tertiary fs-xs"><time datetime="2025-01-07T08:21:06Z">Jan 7</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1736238066"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/envitab/building-an-attendance-system-powered-by-face-recognition-using-react-and-faceio-15a1" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F04lvnq7veziknuelnq29.png" id="article-link-2192708"> Building an Attendance System Powered by Face Recognition Using React and FACEIO </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(86, 39, 101, 0.10); --tag-prefix: #562765; --tag-bg-hover: rgba(86, 39, 101, 0.10); --tag-prefix-hover: #562765; " href="/t/webdev"><span class="crayons-tag__prefix">#</span>webdev</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/authentication"><span class="crayons-tag__prefix">#</span>authentication</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/faceio"><span class="crayons-tag__prefix">#</span>faceio</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(34, 34, 34, 0.10); --tag-prefix: #222222; --tag-bg-hover: rgba(34, 34, 34, 0.10); --tag-prefix-hover: #222222; " href="/t/react"><span class="crayons-tag__prefix">#</span>react</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/envitab/building-an-attendance-system-powered-by-face-recognition-using-react-and-faceio-15a1" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2192708" aria-label="Add a comment to post - Building an Attendance System Powered by Face Recognition Using React and FACEIO"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">7<span class="hidden s:inline"> reactions</span></span> </div> </a> <a href="https://dev.to/envitab/building-an-attendance-system-powered-by-face-recognition-using-react-and-faceio-15a1#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Building an Attendance System Powered by Face Recognition Using React and FACEIO"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aolrtp3sfl5wgkdq1hohvtpistptjcgd" class="crayons-icon"><title id="aolrtp3sfl5wgkdq1hohvtpistptjcgd">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 13 min read </small> <button type="button" id="article-save-button-2192708" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2192708" data-article-author-id="823697" aria-label="Save post Building an Attendance System Powered by Face Recognition Using React and FACEIO to reading list" title="Save post Building an Attendance System Powered by Face Recognition Using React and FACEIO to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2170177" data-content-user-id="1083273"> <a href="https://dev.to/emmanuelisenah/password-composition-policies-are-bad-and-heres-why-5d9p" aria-labelledby="article-link-2170177" class="crayons-story__hidden-navigation-link">Password Composition Policies Are Bad and Here's Why</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/emmanuelisenah" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1083273%2F1722152e-9b38-4a04-98e3-8c7d18477013.jpg" alt="emmanuelisenah profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/emmanuelisenah" class="crayons-story__secondary fw-medium m:hidden"> Emmanuel Isenah </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2170177" aria-controls="story-author-preview-content-2170177" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Emmanuel Isenah profile details"> Emmanuel Isenah </button> <div id="story-author-preview-content-2170177" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/emmanuelisenah" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1083273%2F1722152e-9b38-4a04-98e3-8c7d18477013.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Emmanuel Isenah </span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":1083273,"className":"User","name":"Emmanuel Isenah "}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="1083273"></div> </div> </div> </div> </div> <a href="https://dev.to/emmanuelisenah/password-composition-policies-are-bad-and-heres-why-5d9p" class="crayons-story__tertiary fs-xs"><time datetime="2024-12-23T07:38:41Z">Dec 23 '24</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1734939520"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/emmanuelisenah/password-composition-policies-are-bad-and-heres-why-5d9p" data-preload-image="" id="article-link-2170177"> Password Composition Policies Are Bad and Here's Why </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/passwords"><span class="crayons-tag__prefix">#</span>passwords</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(27, 172, 128, 0.10); --tag-prefix: #1bac80; --tag-bg-hover: rgba(27, 172, 128, 0.10); --tag-prefix-hover: #1bac80; " href="/t/security"><span class="crayons-tag__prefix">#</span>security</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/authentication"><span class="crayons-tag__prefix">#</span>authentication</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/emmanuelisenah/password-composition-policies-are-bad-and-heres-why-5d9p#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Password Composition Policies Are Bad and Here's Why"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aek5p3xngh55tewur2ye8xi6deq4w0y6" class="crayons-icon"><title id="aek5p3xngh55tewur2ye8xi6deq4w0y6">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 9 min read </small> <button type="button" id="article-save-button-2170177" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2170177" data-article-author-id="1083273" aria-label="Save post Password Composition Policies Are Bad and Here's Why to reading list" title="Save post Password Composition Policies Are Bad and Here's Why to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2240685" data-content-user-id="2504842"> <a href="https://dev.to/xinitd/implementing-user-authentication-in-django-2l10" aria-labelledby="article-link-2240685" class="crayons-story__hidden-navigation-link">Implementing user authentication in Django</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/xinitd" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2504842%2Fc61cf2ce-dd89-4abb-a90b-12a5d2a0aff0.jpg" alt="xinitd profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/xinitd" class="crayons-story__secondary fw-medium m:hidden"> Shakhzhakhan Maxudbek </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2240685" aria-controls="story-author-preview-content-2240685" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Shakhzhakhan Maxudbek profile details"> Shakhzhakhan Maxudbek </button> <div id="story-author-preview-content-2240685" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/xinitd" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2504842%2Fc61cf2ce-dd89-4abb-a90b-12a5d2a0aff0.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Shakhzhakhan Maxudbek</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2504842,"className":"User","name":"Shakhzhakhan Maxudbek"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2504842"></div> </div> </div> </div> </div> <a href="https://dev.to/xinitd/implementing-user-authentication-in-django-2l10" class="crayons-story__tertiary fs-xs"><time datetime="2025-01-25T17:32:43Z">Jan 25</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1737826363"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/xinitd/implementing-user-authentication-in-django-2l10" data-preload-image="" id="article-link-2240685"> Implementing user authentication in Django </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(16, 62, 46, 0.10); --tag-prefix: #103e2e; --tag-bg-hover: rgba(16, 62, 46, 0.10); --tag-prefix-hover: #103e2e; " href="/t/django"><span class="crayons-tag__prefix">#</span>django</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/authentication"><span class="crayons-tag__prefix">#</span>authentication</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(30, 56, 187, 0.10); --tag-prefix: #1E38BB; --tag-bg-hover: rgba(30, 56, 187, 0.10); --tag-prefix-hover: #1E38BB; " href="/t/python"><span class="crayons-tag__prefix">#</span>python</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(254, 255, 165, 0.10); --tag-prefix: #FEFFA5; --tag-bg-hover: rgba(254, 255, 165, 0.10); --tag-prefix-hover: #FEFFA5; " href="/t/tutorial"><span class="crayons-tag__prefix">#</span>tutorial</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/xinitd/implementing-user-authentication-in-django-2l10#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Implementing user authentication in Django"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a38vsu40eu7ucsh6xa0s0llppuejn8n6" class="crayons-icon"><title id="a38vsu40eu7ucsh6xa0s0llppuejn8n6">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 2 min read </small> <button type="button" id="article-save-button-2240685" class="c-btn c-btn--icon-alone bookmark-button" data-reactable-id="2240685" data-article-author-id="2504842" aria-label="Save post Implementing user authentication in Django to reading list" title="Save post Implementing user authentication in Django to reading list"> <span class="bm-initial"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75zM16.5 6h-9v11.574l4.5-2.82 4.5 2.82V6z"></path></svg> </span> <span class="bm-success"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true"><path d="M6.75 4.5h10.5a.75.75 0 01.75.75v14.357a.375.375 0 01-.575.318L12 16.523l-5.426 3.401A.375.375 0 016 19.607V5.25a.75.75 0 01.75-.75z"></path></svg> </span> </button> </div> </div> </div> </div> </div> <div class="placeholder-div"></div> <div class="single-article-small-pic" id="article-index-hidden-div" style="display:none"></div> </div> <div class="loading-articles" id="loading-articles"> loading... </div> </main> <div id="sidebar-wrapper-right" class="sidebar-wrapper sidebar-wrapper-right"> <div class="sidebar-bg" id="sidebar-bg-right"></div> <aside class="side-bar sidebar-additional showing" id="sidebar-additional"> <div class="widget"> <header> <h4>trending guides/resources</h4> </header> <div class="widget-body"> <div class="widget-link-list"> <a class="crayons-link crayons-link--contentful" href="/thedammyking/authentication-with-clerk-in-nestjs-server-application-gpm"> Authentication with Clerk in NestJS Server Application </a> <a class="crayons-link crayons-link--contentful" href="/jajera/aws-multi-session-support-seamlessly-switch-between-accounts-2l5h"> AWS Multi-Session Support: Seamlessly Switch Between Accounts </a> <a class="crayons-link crayons-link--contentful" href="/ruwhan/part-2-rails-8-authentication-but-with-jwt-2fd8"> [Part 2] Rails 8 Authentication but with JWT </a> <a class="crayons-link crayons-link--contentful" href="/7twilight/mastering-auth-in-flutter-with-dio-from-simple-access-tokens-to-a-refresh-flow-27cf"> Mastering Auth in Flutter with Dio: From Simple Access Tokens to a Refresh Flow </a> <a class="crayons-link crayons-link--contentful" href="/mmvergara/vue-supabase-auth-with-protected-routes-50jb"> Vue Supabase Auth Template with Protected Routes </a> <a class="crayons-link crayons-link--contentful" href="/anashussain284/laravel-authentication-using-passport-1gkk"> Laravel Authentication Using Passport </a> <a class="crayons-link crayons-link--contentful" href="/jajera/how-to-configure-github-authentication-using-ssh-certificates-3haj"> How to Configure GitHub Authentication Using SSH Certificates </a> <a class="crayons-link crayons-link--contentful" href="/sholajegede/convex-kinde-2pe1"> Convex & Kinde </a> <a class="crayons-link crayons-link--contentful" href="/mmvergara/remix-drizzle-auth-template-30b2"> Remix Drizzle Auth Template </a> <a class="crayons-link crayons-link--contentful" href="/sahildahekar/the-evolution-of-authentication-from-passwords-to-passkeys-2g5d"> The Evolution of Authentication : From Passwords to Passkeys </a> <a class="crayons-link crayons-link--contentful" href="/envitab/building-an-attendance-system-powered-by-face-recognition-using-react-and-faceio-15a1"> Building an Attendance System Powered by Face Recognition Using React and FACEIO </a> <a class="crayons-link crayons-link--contentful" href="/rutvikmakvana4/how-to-get-api-keys-for-google-and-facebook-authentication--4nbk"> How to Get API Keys for Google and Facebook Authentication ? </a> <a class="crayons-link crayons-link--contentful" href="/nishantnaithani/simplifying-system-design-authentication-vs-authorization-4n5h"> Simplifying System Design: Authentication vs Authorization </a> <a class="crayons-link crayons-link--contentful" href="/jajera/how-to-configure-ssh-for-github-authentication-2b53"> How to Configure SSH for GitHub Authentication on Linux </a> <a class="crayons-link crayons-link--contentful" href="/debajit13/secure-your-react-app-with-firebase-auth-4a6o"> Secure your React app with Firebase Auth </a> <a class="crayons-link crayons-link--contentful" href="/jajera/how-to-configure-ssh-for-github-authentication-on-windows-2484"> How to Configure SSH for GitHub Authentication on Windows </a> <a class="crayons-link crayons-link--contentful" href="/ismail_lafhiel/understanding-aws-cognito-a-complete-guide-to-user-authentication-and-management-5b9d"> Understanding AWS Cognito: A Complete Guide to User Authentication and Management </a> <a class="crayons-link crayons-link--contentful" href="/authress/the-risks-of-user-impersonation-58nf"> The Risks of User Impersonation </a> <a class="crayons-link crayons-link--contentful" href="/aaronksaunders/authentication-with-payload-cms-and-nextjs-client-vs-server-approaches-c5a"> Authentication with Payload CMS and Next.js: Client vs Server Approaches </a> <a class="crayons-link crayons-link--contentful" href="/aws-builders/implementing-passwordless-sign-in-flow-with-email-in-cognito-109g"> Implementing passwordless sign-in flow with email in Cognito </a> </div> </div> </div> </aside> </div> </div> <script src="https://assets.dev.to/assets/storiesList-b9c50cbd898a3a64258a3a49db1c531651b0a4a11937be35ed4651111802b5b5.js" defer="defer"></script> <script src="https://assets.dev.to/assets/followButtons-f2455d1f50a862b83fa006b1953e3a1644598781243cae25d3e75b13c04184fd.js" defer="defer"></script> <script src="https://assets.dev.to/assets/tagFollows-25496b4e3bf8bec41c7881be6b330ac8e9aa612d1ce876863a984d934d839384.js" defer="defer"></script> <script src="https://assets.dev.to/assets/feedPreviewCards-8d16b0b656456a28c0a290f756cf6e21e19833111c4796f48c631bfea8323d51.js" defer="defer"></script> <script src="https://assets.dev.to/assets/hideBookmarkButtons-0cc08aac1c422e6b6f75e5284b5350215abf211b59fb3eb8d8a4ef85e205b607.js" defer="defer"></script> <script src="https://assets.dev.to/assets/drawerSliders-823098a874684cfb50f32368b8dd1c7854954b83a588b8b6cfaef1e8fd30d858.js" defer="defer"></script> <script src="https://assets.dev.to/assets/localizeArticleDates-70147c5c6bfe350b42e020ebb2a3dd37419d83978982b5a67b6389119bf162ac.js" defer="defer"></script> <div id="runtime-banner-container"></div> </div> </div> <footer id="footer" class="crayons-footer print-hidden"> <div id="footer-container" class="crayons-footer__container"> <style> .long-bb-body { max-height: calc(100vh - 200px); overflow: hidden; } .long-bb-bottom { height: 180px; background: linear-gradient(to top, var(--card-bg), transparent); margin-top: -180px; position:relative; z-index: 5; } </style> <div style="" data-display-unit data-id="146443" data-category-click="click" data-category-impression="impression" data-context-type="home" data-special="nothing" data-article-id="1886223" data-type-of="in_house"> <p style="font-weight: bold;margin-bottom: 10px"> Thank you to our Diamond Sponsor <a href="https://neon.tech/">Neon</a> for supporting our community. </p> </div> <p class="fs-s crayons-footer__description"> <a class="c-link c-link--branded fw-medium" aria-label="DEV Community Home" href="/">DEV Community</a> — A constructive and inclusive social network for software developers. With you every step of your journey. </p> <ul class="footer__nav-links flex gap-2 justify-center flex-wrap fs-s p-0" style="" /> <li class="footer__nav-link flex items-center"> <a href="/"> Home </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/++"> DEV++ </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/pod"> Podcasts </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/videos"> Videos </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/tags"> Tags </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/help"> DEV Help </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="https://shop.forem.com/"> Forem Shop </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/advertise"> Advertise on DEV </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/challenges"> DEV Challenges </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/showcase"> DEV Showcase </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/about"> About </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/contact"> Contact </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/free-postgres-database-tier"> Free Postgres Database </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/software-comparisons"> Software comparisons </a> <span class="dot ml-2"></span> </li> </ul> <ul class="footer__nav-links flex gap-2 justify-center flex-wrap fs-s p-0" style="" /> <li class="footer__nav-link flex items-center"> <a href="/code-of-conduct"> Code of Conduct </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/privacy"> Privacy Policy </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/terms"> Terms of use </a> <span class="dot ml-2"></span> </li> </ul> <div class="fs-s"> <p>Built on <a class="c-link c-link--branded" target="_blank" rel="noopener" href="https://www.forem.com">Forem</a> — the <a target="_blank" rel="noopener" class="c-link c-link--branded" href="https://dev.to/t/opensource">open source</a> software that powers <a target="_blank" rel="noopener" class="c-link c-link--branded" href="https://dev.to">DEV</a> and other inclusive communities.</p> <p>Made with love and <a target="_blank" rel="noopener" class="c-link c-link--branded" href="https://dev.to/t/rails">Ruby on Rails</a>. DEV Community <span title="copyright">©</span> 2016 - 2025.</p> </div> </div> </footer> <div id="snack-zone"></div> <div id="global-signup-modal" class="authentication-modal hidden"> <div class="authentication-modal__container"> <figure class="authentication-modal__image-container"> <img class="authentication-modal__image" src="https://media2.dev.to/dynamic/image/width=190,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png" alt="DEV Community" loading="lazy" /> </figure> <div class="authentication-modal__content"> <p class="authentication-modal__description"> We're a place where coders share, stay up-to-date and grow their careers. </p> </div> <div class="authentication-modal__actions"> <a href="/enter" class="crayons-btn" aria-label="Log in" data-no-instant> Log in </a> <a href="/enter?state=new-user" class="crayons-btn crayons-btn--ghost-brand js-global-signup-modal__create-account" aria-label="Create new account" data-no-instant> Create account </a> </div> </div> </div> <script src="https://assets.dev.to/assets/signupModalShortcuts-0b25469b985100a01e94cbd7fccaf7f0a4d776e129aac65c766aa32cb28ab29a.js" defer="defer"></script> <div id="cookie-consent"></div> <div id="i18n-translations" data-translations="{"en":{"core":{"add_comment":"Add comment","beta":"beta","comment":"Comment","copy_link":"Copy link","edit_profile":"Edit profile","follow":"Follow","follow_back":"Follow back","following":"Following","like":"Like","loading":"loading...","reaction":"Reaction","report_abuse":"Report abuse","search":"Search","success_settings":"Successfully updated settings.","counted_organization":{"one":"%{count} organization","other":"%{count} organizations"},"counted_user":{"one":"%{count} person","other":"%{count} people"},"not_following":"You're not following anyone","following_everyone":"You're following %{details} (everyone)","you_are_following":"You're following","and":"and"}}}"></div> <div id="reaction-category-resources" class="hidden" aria-hidden="true"> <img data-name="Like" data-slug="like" data-position="1" src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> <img data-name="Unicorn" data-slug="unicorn" data-position="2" src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18" /> <img data-name="Exploding Head" data-slug="exploding_head" data-position="3" src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18" /> <img data-name="Raised Hands" data-slug="raised_hands" data-position="4" src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18" /> <img data-name="Fire" data-slug="fire" data-position="5" src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="18" height="18" /> </div> <script> var userSignedIn = false; if (document.readyState === 'complete' || document.readyState === 'interactive') { initAuth(); } else { document.addEventListener('DOMContentLoaded', initAuth); } function initAuth() { var paramToken = new URLSearchParams(window.location.search).get('jwt'); if (paramToken && !userSignedIn) { authenticateUser(paramToken); } else { var iframe = document.createElement('iframe'); iframe.style.display = 'none'; iframe.src = 'https://forem.com/auth_pass/iframe'; document.body.appendChild(iframe); window.addEventListener('message', function(event) { if (event.origin !== 'https://forem.com' && event.origin !== window.location.origin) { return; } var data = event.data; if (data.authenticated && !userSignedIn) { authenticateUser(data.token); } else if(data.authenticated && window.ReactNativeWebView && window.ReactNativeWebView.postMessage) { window.ReactNativeWebView.postMessage(JSON.stringify({ action: 'login', token: data.token, })); } }); } function authenticateUser(token) { fetch('/auth_pass/token_login', { method: 'POST', credentials: 'include', headers: { 'Content-Type': 'application/json', 'X-CSRF-Token': getMetaContent('csrf-token'), }, body: JSON.stringify({ token: token }), }) .then(function(response) { return response.json(); }) .then(function(data) { if (data.success) { if (document.head.querySelector('meta[name="user-signed-in"][content="false"]')) { // Reload the page to update the user's state location.reload(); } } }) .catch(function(error) { console.error('Error during authentication:', error); }); } function getMetaContent(name) { var element = document.querySelector('meta[name="' + name + '"]'); return element ? element.getAttribute('content') : ''; } } </script> </body> </html>