用户在客户端请求使用 用户登录 接口的时候,接口要验证用户提供的数据,比如看一下是不是提供了登录的用户名与密码,也可以检查一下要登录的这个用户名是不是存在,如果存在继续再验证用户提供的密码跟我们存储在数据仓库里的密码是否匹配。
打开 auth 里的 auth.middleware,在这个文件里可以定义一个验证用户登录数据用的中间件。 这个中间件跟之前我们在 user.middleware 里定义的这个 validateUserData 差不多,可以直接复制一下这个中间件。
粘贴到这个 auth.middleware 里面,然后再修改一下。中间件的名字修改成 validateLoginData 。在控制台上输出的是 验证用户登录数据。
然后准备需要的数据,它们都来自请求的主体。下面会验证 name 还有 password , 然后修改一下 验证用户名 这段代码。
判断的条件设置成 !user,意思是如果在应用的数据仓库里没找到对应的用户,就触发一个异常,这个异常信息可以修改一下,换成 USER_DOES_NOT_EXIST
下面再打开 app/app.middleware,修改一下应用默认的异常处理器,在这个 switch 区块里,复制一种新的情况,再修改一下,如果异常信息是 USER_DOES_NOT_EXIST,做出的响应的状态码可以设置成 400 。响应的信息设置成 用户不存在。
打开 auth.router,这里要修改一下用户登录接口,先在文件顶部导入 auth.middleware 里定义的 validateLoginData 这个中间件,它来自当前目录下的 auth.middleware 这个模块。
找到 用户登录 接口,在接口上安排使用一下这个 validateLoginData 中间件。
最后再到 HTTP 客户端上测试一下这个验证用户登录数据的功能。配置一下 用户登录 请求。先在请求的数据里,去掉这个 name,只留下 password,发送一下这个请求。
得到的响应,状态码是 400 ,响应的数据是 请提供用户名,修改一下请求里带的数据,这次只留下 name ,去掉 password,发送一下这个请求,得到的响应的状态码也是 400,响应的信息是 请提供用户密码。
再修改一下这个请求带的数据,这次在请求的数据里包含 name 还有 password,不过这里可以使用一个在应用里不存在的用户。再发送一下这个请求,这次得到的响应,状态码是 400,响应的信息是 用户不存在。