[英]Adding a secret code to user sign up
請原諒我由於不熟悉此框架及其組件而導致的任何無知。
我已經用angular-fullstack
建立了一個基本的應用程序,並且正在探索一些我想知道如何做的任務。 具體來說,我想在用戶注冊過程中添加一個額外的表單元素,以便不僅任何人都可以注冊,而且僅提供提供口頭共享的預定安全代碼的用戶可以注冊。 如果輸入的代碼無效,則不應創建新用戶,並且(可選)向該用戶返回一些消息。
在我的server/config/environment/index.js
文件中,我向secrets
密鑰添加了一個附加項目,用於檢查輸入的有效代碼
...
// Secret for session, you will want to change this and make it an environment variable
secrets: {
session: 'myapp-secret',
secretCode: 'my-secret' // pre-determined secret code
},
...
在我的表單中,添加其他字段並分配ng-model="secret"
。 該表單指向控制器的register
函數,因此我還將新輸入的值添加到傳遞給Auth.createUser
的參數中:
$scope.register = function(form){
...
if (form.$valid) {
Auth.createUser({
name: $scope.user.name,
email: $scope.user.email,
password: $scope.user.password,
secret: $scope.secret // My input field to pass to the user controller
})
}
...
}
現在,我可以進入server/api/user/user.controller.js
的create
功能,並包括檢查密碼的邏輯。
/**
* Creates a new user
*/
exports.create = function(req, res, next) {
...
if (req.body.secret !== config.secrets.secretCode) {
// cancel creating a new user
};
...
};
現在我的問題是我應該如何在if
語句中處理此問題? 窺探框架,似乎我可以只做重定向或返回到/signup
頁面的某些操作,並包含一條錯誤消息,但是我不確定在此應該做什么。
我從多個角度研究了這個問題,但據我所知,我還沒有“啊哈!” 當我感到自信的那一刻,我正朝着正確的方向前進。 我會以一種非常規的方式來解決這個問題嗎?
我正在使用SRP原理來指導我。
有2個紅旗。 為了實際創建用戶,您不需要密鑰。 出於安全目的,該密碼是實際人員創建用戶所必需的。 因此,關鍵邏輯應該與控制器中其他以實際人為中心的邏輯保持一致,而不是在Auth.create
方法內部。
第二個危險信號是您想使重定向一直發生在控制器中。 看起來您看到了那個危險信號,所以很好。
讓控制器執行安全性和重定向,以便您的代碼或多或少是這樣的:
// controller.js
if (key_matches)
createUser();
else
redirectUser()
// auth.js
exports.create = function(req) {
create_user(req);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.