Page 179 - AngularJS权威教程
P. 179

16.7 使用 AngularJS 进行身份验证   159


                  现在请求的结果被转换成了JSON对象,可以像服务器本来返回的就是JSON格式一样来使用                                        1
              这个对象。

                                                                                                     2
              16.7 使用 AngularJS 进行身份验证

                  大多数网络应用都有需要保护的资源,这些资源不能被公开访问,只能由可以被识别且信任                                           3
              的授权用户访问。这些资源可能是付款信息,也可能是管理功能。

                  无论保护的资源是什么,进行保护的手段都是类似的。                                                           4
                  如何实现服务器端身份验证并不是本章的内容主旨。本章集中介绍服务器端需要做什么来支
              持前端实现此功能。                                                                              5

                  然后会介绍如何实现客户端的身份验证保护,以及这个流程中的一些边缘情况。
                                                                                                     6
              16.7.1  服务器端需求
                                                                                                     7
                  首先必须保证服务器端API的安全性。由于我们处理的代码是未编译的,且可能是由不信任
              的源发送的,不能假设所有的用户都聪明到可以认识到这些潜在的风险。
                                                                                                     8
                  下面介绍常被用来保护客户端应用的两种方法。

                  1. 服务器端视图渲染                                                                        9
                  如果站点所有的HTML页面都是由后端服务器处理的,可以使用传统的授权方式,由服务器
              端进行鉴权,只发送客户端需要的HTML。                                                                   10
                  2. 纯客户端身份验证

                  我们希望客户端和服务端的开发工作可以解耦并各自独立进行,且可以将组件独立地发布到                                           11
              生产环境中,互相没有影响。因此,需要通过使用服务器端API来保护客户端身份验证的安全,
              但并不依赖这些API来进行身份验证。                                                                     12
                  通过令牌授权来实现客户端身份验证,服务器需要做的是给客户端应用提供授权令牌。

                  令牌本身是一个由服务器端生成的随机字符串,由数字和字母组成,它与特定的用户会话相关联。                                        13


                          uuid库是用来生成令牌的好选择。                                                          14


                  当用户登录到我们的站点后,服务器会生成一个随机的令牌,并将用户会话同令牌之间建立                                           15
              关联,用户无需将ID或其他身份验证信息发送给服务器。
                  客户端发送的每个请求都应该包含此令牌,这样服务器才能根据令牌来对请求的发送者进行                                           16
              身份验证。
                  服务器端则无论请求是否合法,都会将对应事件的状态码返回给客户端,这样客户端才能做                                           17
              出响应。

                  例如,我们希望服务端对所有身份验证未通过的请求都返回401状态码。                                                  18
   174   175   176   177   178   179   180   181   182   183   184