簡體   English   中英

為用戶注冊添加密碼

[英]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.jscreate功能,並包括檢查密碼的邏輯。

/**
 * 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM