用户登录

回到 AuthController 控制器 .. 在这里可以再添加一个 auth 方法 .. 它是处理登录请求用的方法 .. 方法里面需要用到 reqeust .. response ... 还有一个 auth ..

在方法里面,先得到请求里的 username 还有 password ... const username .. password .. 请求里的数据可以使用 request.all() 得到 ..

然后再 await ... 用一下 auth 上面的 attempt 去登录一下 .. 把登录用的唯一标识,还有密码交给这个方法,我们在 auth 配置里,设置的唯一标识是 username ... 第一个参数是 username ... 第二个参数是 password ...

这个 attempt 会验证用户名还有密码是否匹配,如果匹配就在用户的 session 里设置一下,让用户登录 ..

登录成功以后,可以把用户重定向到用户页面上 .. 下面可以添加一个 user .. await .. 用一下 auth 上的 getUser .. 这个方法可以得到当前登录的用户 ..

再 return 一个重定向 .. response ... 重定向可以使用 route 方法 .. 路由的名字是 UserController.show .. 一个对象 .. id 参数的值是 user.id ..

试验

回到浏览器 .. 测试一下用户登录 .. 我们先直接提交一个这个表单 .. 你会发现在 Username 下面会显示一个错误 .. 说找不到指定的用户 .. 输入一个在网站上实际存在的用户名 ... 再提交一下 .. 这次在 Password 元素下面会提示 Invalid user password ... 意思就是密码不对 ..

错误信息

这个验证数据的规则我们也可以自己再定制一下 .. 回到 AuthController .. 在文件的顶部 .. 先把 Validator 里面的 validateAll 这个方法拿出来 ..

再去添加一套规则 ... rules ... 一个对象 .. 先设置 username 的规则 .. 应该是 required .. 再添加一个 password ... 规则也是 required ..

下面添加一个 validation ,表示验证 .. 用一下 validateAll .. 验证的是 request.all() 这些数据 .. 规则是 rules ..

再判断一下 .. 如果 validation.fails() .. 我们用一下 session 的 withErrors .. 错误信息是 validation.messages() .. 再用一个 flashAll() ..

然后 return 的是, response.redirect back ...

再把 session 从 auth 这个方法的参数里解构出来 ..

试验

再回到浏览器,可以试一下 .. 直接提交登录请求 ... 会显示用户名还有密码里面没有东西 ..

输入一个不存在的用户 .. 再提交一下 ... 会提示这个用户不存在 ... 这次再输入一个存在的用户 ... 然后再输入一个正确的密码 .... 登录一下 ...

成功以后,会把用户重定向到登录成功的这个用户的页面上 ...

身份验证:登录(使用 attempt 方法)《 Node.js 应用:身份验证 》

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点