Пользовательские классы в ASP.Net Core - PullRequest
0 голосов
/ 11 декабря 2018

Новое в .NET Core Я пытаюсь создать собственный класс, который я могу вызывать с разных контроллеров.

В корне моего проекта я создал папку с именем Helpers.Я создал EncryptString.cs:

namespace VPV.Helpers {
    public class EncryptString {
        public string Index(string val, string salt) {
            byte[] data = Encoding.UTF8.GetBytes(val + salt);
            data = SHA512.Create().ComputeHash(data);
            return Convert.ToBase64String(data);
        }
    }
}

Но как мне это вызвать с моего контроллера?

Я пробовал что-то вроде:

public async Task<IActionResult> OnPostAsync(Guid id, string password, string passwordCheck) {
    hashedPassword = new VPV.Helpers.EncryptString [...]
}

Но я застрял оттуда.

1 Ответ

0 голосов
/ 11 декабря 2018

Я думаю, вы, вероятно, хотели, чтобы это был статический вызов.Однако лучшим подходом было бы сделать этого помощника инъекционным сервисом, но не уверен, считаете ли вы его слишком сложным или избыточным.

Я только предложил это, поскольку вы указали, что он будет использоваться несколькими контроллерами.

Теперь, поскольку вы упомянули, что хотите сохранить его простым и, хотя и не лучшим из дизайнов, сделайтеметод static,

namespace VPV.Helpers {    
    public static class Strings {    
        public string Encrypt(string val, string salt) {
            byte[] data = Encoding.UTF8.GetBytes(val + salt);
            data = SHA512.Create().ComputeHash(data);
            return Convert.ToBase64String(data);
        }
    }
}

и вызовите его там, где это необходимо.

public async Task<IActionResult> OnPostAsync(Guid id, string password, string passwordCheck) {
    //...

    var hashedPassword = new VPV.Helpers.Strings.Encrypt(password, salt);

    //...
}

Вы также можете рассмотреть возможность преобразования помощника в метод расширения

namespace VPV.Helpers {    
    public static class Strings {    
        public string Encrypt(this string val, string salt) {
            byte[] data = Encoding.UTF8.GetBytes(val + salt);
            data = SHA512.Create().ComputeHash(data);
            return Convert.ToBase64String(data);
        }
    }
}

, что будет означать, что вы можете вызвать его как

public async Task<IActionResult> OnPostAsync(Guid id, string password, string passwordCheck) {
    //...

    var hashedPassword = password.Encrypt(salt);

    //...
}
...