单页应用程序(SPA - Angular)和身份验证最佳实践?

MoM*_*oMo 17 authentication angularjs

我们正在研究将标准认证(登录)与我们的Angular SPA集成的最佳方法.我们遇到了两种模式(见下文),并希望看到哪种被认为是一种"更好"的架构,可以将身份验证集成到我们的Angular网站中.

模式1 - 保持与SPA的分离(参见此处):在此模式中,登录过程在SPA之外完成(单独的页面加载),一旦用户通过身份验证,它们将被重定向到SPA(另一个页面加载).

模式2 - 集成登录到SPA(参见此处此处):在此模式中,身份验证过程在SPA中,登录状态通过Angular路由器和服务进行管理.

我们倾向于PATTERN 2,但是我们希望从SO社区中听到您的想法是什么,以及您如何比较这两种模式.

谢谢!

mas*_*plo 6

几个月前我正在考虑同样的事情,最后决定在SPA解决方案中登录.

我认为决定两种方法之间的决定因素是,如果您想在用户登录之前加载完整的应用程序.

如果登录是SPA的一部分,则在向用户显示登录之前将进行引导.这有两个缺点.首先你加载了许多你甚至可能不需要的js,css等.其次,您授权未经授权的用户访问您的代码.我认为两者都是小问题,因为它们都可以解决但仍有待考虑.

如果登录与SPA分开,则会给您带来维护开销,因为您必须维护应用程序之外的某些内容,并且还需要与您的应用程序集成(例如主题,徽标,字体等).但话说回来,Gmail正在这样做:P

我不知道你使用的是什么服务器技术,但是来自ng-conf的google演示文稿为上述问题提供了一些很好的解决方案(不幸的是,我已经实现了我的解决方案)

https://docs.google.com/file/d/0B4F6Csor-S1cNThqekp4NUZCSmc/edit (幻灯片9自己)