sails + waterlock,如何使用相应的HTML模板实现工作流

时间:2016-10-04 14:02:14

标签: node.js authentication sails.js waterlock

背景

大约6个月前,我开始使用Sails开发一个Web应用程序。 我希望使用sails-authsails-generate-authsails-permissions轻松实现身份验证和权限。 6个月后,我意识到这些模块不再维护得很好。我决定退回Waterlock

问题

  

对于 NodeJS,Express&帆即可。来自 Rails ,我有偏见的期望。我需要被牵手......

我能够正确安装 Waterlock ,并且能够使用API​​。

1。登录

POST http://localhost:1337/auth/login

email中传递passwordform-data(见下面的屏幕截图):

返回(在POSTMAN中):

{
  "auth": {
    "password": "$2a$10$5swWYJLZ.KbKWA9.8Hg8eOr.8HiCBiddWDyHyGSB3y7bluJZwvjDS",
    "email": "my.email@mydomain.com",
    "createdAt": "2016-10-04T13:01:17.594Z",
    "updatedAt": "2016-10-04T13:01:17.607Z",
    "id": 12,
    "user": 13
  },
  "createdAt": "2016-10-04T13:01:17.603Z",
  "updatedAt": "2016-10-04T13:01:17.603Z",
  "id": 13
}

我想我的用户是与他的加密密码一起创建和存储的。

enter image description here

下一步我尝试实施用户界面(这是我需要指导的地方):

UserController.js

'new': function(req, res) {
    res.view();
},

user/new.ejs

<h1>Sign up</h1>
<form action="/auth/login" method='POST'>
    <input type='text' placeholder='me@mydomain.com' name='email'>
    <input type='password' placeholder='password' name='password'>
    <input type='submit' value="Create account">
</form>

问题1 :创建/登录用户即auth/login后,如何重定向到其他网址?刚刚创建的用户的例如 /user/show/:id id

我尝试在login添加AuthController操作,但这只会覆盖实际有用的操作。

  

更新:我发现waterlock.js有Post操作挂钩,但仍然不知道如何重定向到刚刚创建或登录的用户的/user/show/:id。< / p>

问题2 :我不应该删除"password": "$2a$10$...ZwvjDS",返回的内容吗?

2。 JWT

好的, JSON网络代币。所以我经过身份验证,接下来我创建了一个JWT,我可以在下一个请求的标题中传递。

使用POSTMAN

POST http://localhost:1337/user/jwt

{
  "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiIxM3x1bmRlZmluZWQiLCJzdWIiOiJzdWJqZWN0IiwiYXVkIjoiYXBwIG5hbWUiLCJleHAiOjE0NzYxOTIxNDc3OTgsIm5iZiI6MTQ3NTU4NzM0Nzc5OCwiaWF0IjoxNDc1NTg3MzQ3Nzk4LCJqdGkiOiI5ODgyYWY2MC04YTM1LTExZTYtODI0Yy1mNTZhYWE0MDhiZmIifQ.GYT4f49ggW8VwaEqTy0JskX6nHWZUMvM0A92KD1EC4I",
  "expires": 1476192147798
}

问题3 :我经过身份验证,会话被创建了吗?为什么我需要JWT?它比sessionAuth好吗?

实际上找到了我的答案here

问题4 :在LOGIN之后,我需要POST http://localhost:1337/user/jwt来获取JWT。我应该如何在Sails中实现它?

3。我如何使用我的access_token

问题5 :我在哪里存储access_token并在下一个请求中使用它? (Sails的最佳实践)

1 个答案:

答案 0 :(得分:1)

广告。 2)肯定是的。客户无权访问其加密密码

广告。 4) JWT应该在服务中,没有控制器,因为是更安全的方式。所以,是的。它应该在服务器端完成,客户端不应该访问JWT逻辑。

广告。 5)无论你想要什么。恕我直言头是最好的地方。