在Angular 7和Net 2.1中使用秘密字符串进行身份验证

时间:2018-12-19 14:51:46

标签: c# asp.net-core .net-core

我正在关注this教程“ Angular 7-用户注册和登录示例及教程”。我想知道app.Settings.secret的存储位置。下面显示了如何声明appSettings。我找不到“秘密”字符串的存储位置

  public UsersController(
        IUserService userService,
        IMapper mapper,
        IOptions<AppSettings> appSettings)
    {
        _userService = userService;
        _mapper = mapper;
        _appSettings = appSettings.Value;
    }

这是appSettings.cs的主题

    public class AppSettings
{
    public string Secret { get; set; }
}

最后,这是在UsersController中访问它的方式:

public IActionResult Authenticate([FromBody]UserDto userDto)
    {
        var user = _userService.Authenticate(userDto.Username, userDto.Password);

        if (user == null)
            return BadRequest(new { message = "Username or password is incorrect" });

        var tokenHandler = new JwtSecurityTokenHandler();
        var key = Encoding.ASCII.GetBytes(_appSettings.Secret);

当我使用真正的后端运行程序并在此行上使用断点时:

---> var键= Encoding.ASCII.GetBytes(_appSettings.Secret);

然后将鼠标悬停在_appSettings上。秘密,我看到以下字符串:

“这用于签名和验证JWT令牌,用自己的秘密替换它,可以是任何字符串”

我想知道字符串存储在哪里,以分配给_appSettings.Secret。

1 个答案:

答案 0 :(得分:1)

在默认设置中,它存储在项目内的appsettings [.EnvirnomentName(可选)]。json文件中,或来自asp.net核心配置包支持的其他各种来源:

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-2.2

以下是“选项模式”的文档:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/options?view=aspnetcore-2.2