ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Angular路由守卫详解:Minimus的AppGuard与AuthGuard如何守护你的应用路由

Angular路由守卫详解:Minimus的AppGuard与AuthGuard如何守护你的应用路由 Angular路由守卫详解Minimus的AppGuard与AuthGuard如何守护你的应用路由【免费下载链接】minimus️ A fully featured production ready Angular weather app (tutorial)项目地址: https://gitcode.com/gh_mirrors/mi/minimusMinimus 是一个功能完整、可直接上生产的 Angular 天气应用教程项目而它最值得学习的亮点之一就是Angular 路由守卫的使用仅用两个守卫类AppGuard与AuthGuard就完成了登录才能看数据、已登录不再回登录页的全部访问控制。本文将带你快速看懂这两个守卫的工作原理。为什么需要 Angular 路由守卫想象一下用户没有登录却在浏览器地址栏直接输入了添加城市页面的网址。如果没有路由守卫页面组件照常加载却会因为没有登录态而报错或显示空白。路由守卫Guard就是路由前的门卫每次跳转前Angular 都会调用守卫的canActivate方法由它决定——✅ 放行正常加载目标页面 拦截执行重定向比如跳转到登录页Minimus 把守卫放在 src/app/guards/ 目录下共两个文件src/app/guards/app.guard.ts—— AppGuard保护需要登录的页面src/app/guards/auth.guard.ts—— AuthGuard拦截已登录用户访问登录/注册页两个守卫的分工一张表看懂两个守卫逻辑几乎镜像对称这是初学者最容易混淆的地方先看这张表守卫挂载位置未登录时已登录时AppGuard首页、城市详情、添加城市跳转到/login放行 ✅AuthGuard登录页、注册页放行 ✅跳转到首页/配合来看src/app/app-routing.module.ts中的路由配置职责一目了然首页、details/:city、add三条路由都挂AppGuardlogin、signup两条路由都挂AuthGuard兜底路由**重定向回首页这样组合后体验非常自然没登录 → 一律送你去登录页登录后 → 登录页不再重复出现。AppGuard 核心逻辑异步判断登录态传统写法是守卫返回boolean而 Minimus 的登录状态来自 Firebase是一个异步信号所以这里返回的是Observableboolean。核心代码src/app/guards/app.guard.tsreturn this.fb.isAuth().pipe( map(auth { if (auth) { return true; // 已登录放行 } else { this.router.navigate([/login]); // 未登录去登录 return false; } }) );三个关键点值得新手记住登录状态封装在 Service 里isAuth()定义在src/app/services/fb/fb.service.ts守卫只负责问一句 做决定不关心登录状态从哪来重定向交给 Router守卫内部直接this.router.navigate([/login])拦截和跳转一步完成守卫声明为根级服务providedIn: root无需手动在模块中声明Angular 会自动注入AuthGuard登录页的反向门卫src/app/guards/auth.guard.ts的判断逻辑完全反过来——未登录放行return true让你正常登录已登录this.router.navigate([/])送回首页并返回false这解决了一个常见小毛病用户已经登录了却手动访问/login结果又看到登录页困惑我怎么还在这儿。有了 AuthGuard这种情况会被自动导回首页体验更顺滑。新手速记清单保护内容页用 AppGuardcanActivate返回false前先navigate到登录页保护登录页用 AuthGuard已登录用户访问登录页时重定向回首页⚡登录态是异步的就返回 Observable借助isAuth()这样的响应式接口避免竞态问题状态逻辑放 Service守卫只做决策便于测试也方便以后换成 JWT、SSO 等方案时只改一处小结Minimus 用不到 60 行代码演示了 Angular 路由守卫的完整套路两条对称的canActivate逻辑 一处路由表挂载就实现了登录闭环。读懂src/app/guards/下的这两个小文件再对照src/app/app-routing.module.ts你就掌握了在 Angular 应用中守护路由的通用方法——无论后续做后台管理系统还是电商站点这套模式都直接可用。【免费下载链接】minimus️ A fully featured production ready Angular weather app (tutorial)项目地址: https://gitcode.com/gh_mirrors/mi/minimus创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表