[{"data":1,"prerenderedAt":220},["ShallowReactive",2],{"i-ic:outline-arrow-upward":3,"Footer_afPiwGMwNiEyV4syWzw87ovzxHAgs4iwKtCn4zqBf8E":8,"episode-\u002Fpodcasts\u002Fbetter-auth":16,"github-sponsor":122,"i-material-symbols:home":197,"i-ic:baseline-play-circle-filled-white":199,"i-material-symbols:ios-share":201,"i-cbi:deezer-logo":203,"i-vscode-icons:file-type-rss":205,"i-ri:heart-3-fill":208,"Brand_dlIOZD2O03VXPoFYukMOJnSnZRMTmJ0YwMKY5fNK8":210,"Duration_tFkM6ASGNihWZdxbjueiQyoi4DEKQz4Q6sf459FFE":215},{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":7},0,24,false,"\u003Cpath fill=\"currentColor\" d=\"m4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8z\"\u002F>",["Island",9],{"key":10,"result":11},"Footer_afPiwGMwNiEyV4syWzw87ovzxHAgs4iwKtCn4zqBf8E",{"head":12},{"style":13},[14],{"innerHTML":15},":where(.i-mdi\\:github){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url(\"data:image\u002Fsvg+xml,%3Csvg xmlns='http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12 2A10 10 0 0 0 2 12c0 4.42 2.87 8.17 6.84 9.5c.5.08.66-.23.66-.5v-1.69c-2.77.6-3.36-1.34-3.36-1.34c-.46-1.16-1.11-1.47-1.11-1.47c-.91-.62.07-.6.07-.6c1 .07 1.53 1.03 1.53 1.03c.87 1.52 2.34 1.07 2.91.83c.09-.65.35-1.09.63-1.34c-2.22-.25-4.55-1.11-4.55-4.92c0-1.11.38-2 1.03-2.71c-.1-.25-.45-1.29.1-2.64c0 0 .84-.27 2.75 1.02c.79-.22 1.65-.33 2.5-.33s1.71.11 2.5.33c1.91-1.29 2.75-1.02 2.75-1.02c.55 1.35.2 2.39.1 2.64c.65.71 1.03 1.6 1.03 2.71c0 3.82-2.34 4.66-4.57 4.91c.36.31.69.92.69 1.85V21c0 .27.16.59.67.5C19.14 20.16 22 16.42 22 12A10 10 0 0 0 12 2'\u002F%3E%3C\u002Fsvg%3E\")}",{"id":17,"title":18,"author":19,"body":20,"categories":94,"description":96,"dsSlug":97,"duration":98,"episodeArtwork":99,"episodeNumber":100,"episodeType":101,"explicit":6,"extension":102,"guid":98,"links":103,"meta":104,"navigation":105,"path":106,"publicationDate":107,"season":87,"seo":108,"status":109,"stem":110,"subtitle":111,"tags":112,"videoLink":120,"__hash__":121},"podcasts\u002Fpodcasts\u002F122.better-auth\u002Findex.md","Better Auth, la solution ultime pour l'authentification","Double Slash",{"type":21,"value":22,"toc":85},"minimark",[23,28,46,50,54,57,64,68,71,75,78,82],[24,25,27],"h2",{"id":26},"better-auth-une-librairie-typescript-pour-lauthentification-et-les-autorisations","Better Auth : une librairie TypeScript pour l'authentification et les autorisations",[29,30,31,40],"ul",{},[32,33,34],"li",{},[35,36,37],"a",{"href":37,"rel":38},"https:\u002F\u002Fwww.better-auth.com",[39],"nofollow",[32,41,42],{},[35,43,44],{"href":44,"rel":45},"https:\u002F\u002Fgithub.com\u002Fbetter-auth\u002Fbetter-auth",[39],[24,47,49],{"id":48},"pourquoi-better-auth","Pourquoi Better Auth ?",[51,52,53],"p",{},"Problèmes actuels avec les systèmes d'authentification",[51,55,56],{},"– Dépendance à des services tiers pour l'authentification\n– Limitations et contraintes liées à l'évolution des besoins\n– Importance de la sécurité et de la mise à jour des systèmes d'authentification",[51,58,59,60],{},"Plus d'infos : ",[35,61,62],{"href":62,"rel":63},"https:\u002F\u002Fwww.better-auth.com\u002Fdocs\u002Fintroduction",[39],[24,65,67],{"id":66},"la-proposition-de-better-auth","La proposition de Better Auth",[51,69,70],{},"– Une librairie TypeScript agnostique aux frameworks pour l'authentification et les autorisations\n– Composée de deux parties : serveur et client\n– Compatible avec plusieurs frameworks et bases de données",[24,72,74],{"id":73},"fonctionnalités-clés-de-better-auth","Fonctionnalités clés de Better Auth",[51,76,77],{},"– Génération automatique de migrations pour les bases de données\n– Intégration avec des adaptateurs pour les ORM et les bases de données\n– Utilisation de hooks pour personnaliser le processus d'authentification\n– Support pour l'authentification par email et mot de passe, ainsi que pour les connexions sociales\n– Intégration avec des frameworks full stack et des microservices",[24,79,81],{"id":80},"les-avantages-de-better-auth","Les avantages de Better Auth",[51,83,84],{},"– Flexibilité et personnalisation\n– Sécurité et mises à jour régulières\n– Intégration facile avec des frameworks et des bases de données\n– Système de plugins pour étendre les fonctionnalités",{"title":86,"searchDepth":87,"depth":87,"links":88},"",2,[89,90,91,92,93],{"id":26,"depth":87,"text":27},{"id":48,"depth":87,"text":49},{"id":66,"depth":87,"text":67},{"id":73,"depth":87,"text":74},{"id":80,"depth":87,"text":81},[95],"Technology","Dans cet épisode du podcast, nous plongeons dans un sujet qui touche absolument tous les développeurs : l’authentification. Cette partie de votre application devient vite un cauchemar dès qu’on veut faire plus que “email + mot de passe”. Nous allons parler de Better Auth, une librairie TypeScript qui promet de rendre l’authentification enfin agréable. Framework agnostique, elle vous apporte tout ce qu'il faut : 2FA, passkeys, multi-tenancy, multi-sessions, SSO... bref, tout ce qui fait qu’on finit normalement par pleurer dans la documentation ou à réinventer une roue carrée. Si vous voulez vous concentrer sur votre produit et arrêter de bricoler des flux d’authentification maison, cet épisode est pour vous.","DS_122_better-auth",null,"https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1760035124\u002Fepisode\u002FART_122_hxhaur.png",122,"full","md",[],{},true,"\u002Fpodcasts\u002Fbetter-auth","2025-10-30",{"title":18,"description":96},"published","podcasts\u002F122.better-auth\u002Findex","Better Auth, la solution ultime pour l'authentification et les autorisations en TypeScript",[113,114,115,116,117,118,119],"authentication","authorization","typescript","passkeys","2FA","SSO","security","RNUwnZ7OeyU","DcUPxDoJf7UoWngRH7m_ZQo7wsHKshbXGRmhdEI9FJ8",{"data":123},{"organization":124},{"sponsorsListing":125},{"name":126,"fullDescriptionHTML":127,"url":128,"shortDescription":129,"activeGoal":130,"isPublic":105,"sponsorable":134},"sponsors-double-slash-podcast","\u003Cp>Le podcast des dev pour dev par des dev !\u003C\u002Fp>\n\u003Cp>Des podcasts et des videos sur les technologie WEB modernes.\u003C\u002Fp>\n\u003Cp>A deux ou avec un invité, on discute des tendances, des nouvelles technologies, des meilleures pratiques actuelles.\u003C\u002Fp>\n\u003Cp>🎥 \u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fchannel\u002FUCp5DGBAX2XNJXeOVAo7bICQ\">Youtube\u003C\u002Fa>\u003Cbr>\n🎙️ \u003Ca href=\"https:\u002F\u002Fspoti.fi\u002F317wtvD\">Spotify\u003C\u002Fa> ▪️ \u003Ca href=\"https:\u002F\u002Fapple.co\u002F3fTguFo\">Apple Podcast\u003C\u002Fa> ▪️ \u003Ca href=\"https:\u002F\u002Fbit.ly\u002F3i0hDgy\">Deezer\u003C\u002Fa> ▪️ \u003Ca href=\"https:\u002F\u002Fbit.ly\u002F31aKKYd\">Google Podcast\u003C\u002Fa>\u003Cbr>\n🌐 \u003Ca href=\"https:\u002F\u002Fdouble-slash.dev\u002F\">Double Slash DEV\u003C\u002Fa>\u003C\u002Fp>","https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fdouble-slash-podcast","Le podcast des dev pour les dev par des dev !",{"description":131,"percentComplete":132,"targetValue":132,"title":133},"L'ensemble des charges seront couvertes. Service de stockage et abonnement aux services utilisés.",70,"$70 per month",{"sponsors":135},{"edges":136},[137,143,149,155,161,167,173,179,185,191],{"node":138},{"id":139,"name":140,"url":141,"avatarUrl":142},"MDQ6VXNlcjEwMDMwNw==","Clément Delmas","https:\u002F\u002Fgithub.com\u002Fclem","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F100307?u=878ed4b7cdf920879b57046f19e434fea2c7d296&v=4",{"node":144},{"id":145,"name":146,"url":147,"avatarUrl":148},"MDQ6VXNlcjI3NTYwOQ==","Thibaud Lepretre","https:\u002F\u002Fgithub.com\u002Fkakawait","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F275609?v=4",{"node":150},{"id":151,"name":152,"url":153,"avatarUrl":154},"MDQ6VXNlcjE5MTQxNjA=","David Pollet","https:\u002F\u002Fgithub.com\u002Fdavidpollet","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1914160?u=4b3da16383b9fa810fd0980f756000709403ab45&v=4",{"node":156},{"id":157,"name":158,"url":159,"avatarUrl":160},"MDQ6VXNlcjYzMzMzOTY=","Eric","https:\u002F\u002Fgithub.com\u002Fericledonge","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6333396?u=e9e541a6b9125d8e8b558fdd914c847eb36db695&v=4",{"node":162},{"id":163,"name":164,"url":165,"avatarUrl":166},"MDQ6VXNlcjg4OTk3Njg=","François Gardien","https:\u002F\u002Fgithub.com\u002FYoutch","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F8899768?u=85ae8c4299c380bcec02e99e9364624f3ce333c7&v=4",{"node":168},{"id":169,"name":170,"url":171,"avatarUrl":172},"MDQ6VXNlcjEwMTc2NjI2","Antharuu","https:\u002F\u002Fgithub.com\u002Fantharuu","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F10176626?u=3f6ef490b330d5a9bbaa3137560b5d1d4cf13a4a&v=4",{"node":174},{"id":175,"name":176,"url":177,"avatarUrl":178},"MDQ6VXNlcjEwMTg2OTkz","Adrien Zaganelli","https:\u002F\u002Fgithub.com\u002FadrienZ","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F10186993?u=08189ef8cf708a61445b6a57cf7a2aa361d484af&v=4",{"node":180},{"id":181,"name":182,"url":183,"avatarUrl":184},"MDQ6VXNlcjI2MTQyMzgz","Thomas Lemoine","https:\u002F\u002Fgithub.com\u002Fthomaslemoine","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F26142383?u=4c68175459b0ae1f8c68c48c40f2ae148747675d&v=4",{"node":186},{"id":187,"name":188,"url":189,"avatarUrl":190},"MDQ6VXNlcjY1NzM3MTMx","Valentin Grenier","https:\u002F\u002Fgithub.com\u002Fvalentin-grenier","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F65737131?u=0ba0cc828412f6655a948c6a82f69b9c909f8fd9&v=4",{"node":192},{"id":193,"name":194,"url":195,"avatarUrl":196},"U_kgDOBipZwA","Hebrard Frederic","https:\u002F\u002Fgithub.com\u002Ffrederichebrard","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F103438784?v=4",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":198},"\u003Cpath fill=\"currentColor\" d=\"M4 21V9l8-6l8 6v12h-6v-7h-4v7z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":200},"\u003Cpath fill=\"currentColor\" d=\"M12 2C6.475 2 2 6.475 2 12s4.475 10 10 10s10-4.475 10-10S17.525 2 12 2m-2 14.5v-9l6 4.5z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":202},"\u003Cpath fill=\"currentColor\" d=\"M6 22q-.825 0-1.412-.587T4 20V10q0-.825.588-1.412T6 8h3v2H6v10h12V10h-3V8h3q.825 0 1.413.588T20 10v10q0 .825-.587 1.413T18 22zm5-6V4.825l-1.6 1.6L8 5l4-4l4 4l-1.4 1.425l-1.6-1.6V16z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":204},"\u003Cpath fill=\"currentColor\" d=\"M18.774 5.051c.185-1.072.457-1.747.757-1.748c.561 0 1.015 2.341 1.015 5.228s-.455 5.229-1.016 5.229c-.23 0-.443-.4-.614-1.064c-.27 2.439-.831 4.115-1.48 4.115c-.5 0-.953-1.007-1.256-2.594c-.207 3.018-.727 5.161-1.334 5.161c-.381 0-.73-.848-.987-2.231C13.55 20 12.834 22 12 22s-1.551-2-1.86-4.853c-.255 1.383-.6 2.231-.986 2.231c-.609 0-1.128-2.142-1.335-5.161c-.3 1.587-.752 2.594-1.256 2.594c-.649 0-1.21-1.676-1.481-4.115c-.169.668-.382 1.064-.613 1.064c-.562 0-1.017-2.34-1.017-5.229S3.908 3.3 4.471 3.3c.3 0 .57.676.758 1.748C5.527 3.2 6.014 2 6.564 2c.653 0 1.219 1.7 1.487 4.168c.262-1.8.658-2.941 1.1-2.941c.624 0 1.154 2.252 1.351 5.393C10.874 7.01 11.41 6 12 6s1.128 1.011 1.5 2.62c.2-3.141.727-5.393 1.351-5.393c.444 0 .84 1.145 1.1 2.941C16.219 3.7 16.785 2 17.439 2c.547 0 1.035 1.2 1.335 3.051m-16.2 5.3C2.258 10.355 2 9.31 2 8.017s.258-2.337.576-2.337s.578 1.044.578 2.337s-.254 2.338-.578 2.338Zm18.848 0c-.32 0-.577-1.045-.577-2.338s.257-2.337.577-2.337S22 6.724 22 8.017s-.258 2.338-.576 2.338Z\"\u002F>",{"left":4,"top":4,"width":206,"height":206,"rotate":4,"vFlip":6,"hFlip":6,"body":207},32,"\u003Cdefs>\u003ClinearGradient id=\"SVGvSi4fdXe\" x1=\"30.06\" x2=\"225.94\" y1=\"30.06\" y2=\"225.94\" gradientTransform=\"matrix(.11 0 0 .11 2 2)\" gradientUnits=\"userSpaceOnUse\">\u003Cstop offset=\"0\" stop-color=\"#e3702d\"\u002F>\u003Cstop offset=\".11\" stop-color=\"#ea7d31\"\u002F>\u003Cstop offset=\".35\" stop-color=\"#f69537\"\u002F>\u003Cstop offset=\".5\" stop-color=\"#fb9e3a\"\u002F>\u003Cstop offset=\".7\" stop-color=\"#ea7c31\"\u002F>\u003Cstop offset=\".89\" stop-color=\"#de642b\"\u002F>\u003Cstop offset=\"1\" stop-color=\"#d95b29\"\u002F>\u003C\u002FlinearGradient>\u003C\u002Fdefs>\u003Crect width=\"28\" height=\"28\" x=\"2\" y=\"2\" fill=\"#cc5d15\" rx=\"6.01\" ry=\"6.01\"\u002F>\u003Crect width=\"26.91\" height=\"26.91\" x=\"2.54\" y=\"2.54\" fill=\"#f49c52\" rx=\"5.47\" ry=\"5.47\"\u002F>\u003Crect width=\"25.82\" height=\"25.82\" x=\"3.1\" y=\"3.1\" fill=\"url(#SVGvSi4fdXe)\" rx=\"5.14\" ry=\"5.14\"\u002F>\u003Cpath fill=\"#fff\" d=\"M6.82 6.16v3.83a15.31 15.31 0 0 1 15.3 15.3h3.83A19.14 19.14 0 0 0 6.81 6.17zm0 6.45v3.72a8.97 8.97 0 0 1 8.96 8.97h3.72A12.69 12.69 0 0 0 6.81 12.6zm2.62 7.44a2.63 2.63 0 0 0-2.63 2.62a2.63 2.63 0 0 0 2.63 2.63a2.63 2.63 0 0 0 2.63-2.63a2.63 2.63 0 0 0-2.63-2.63z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":209},"\u003Cpath fill=\"currentColor\" d=\"M16.5 3C19.538 3 22 5.5 22 9c0 7-7.5 11-10 12.5C9.5 20 2 16 2 9c0-3.5 2.5-6 5.5-6C9.36 3 11 4 12 5c1-1 2.64-2 4.5-2\"\u002F>",["Island",211],{"key":212,"result":213},"Brand_dlIOZD2O03VXPoFYukMOJnSnZRMTmJ0YwMKY5fNK8",{"head":214},{},["Island",216],{"key":217,"result":218},"Duration_tFkM6ASGNihWZdxbjueiQyoi4DEKQz4Q6sf459FFE",{"head":219},{},1785405174419]