密码保护没有身份/成员资格的控制器

时间:2017-11-10 13:09:25

标签: asp.net-core asp.net-core-mvc

在asp.net core 2中是否有办法保护我称为AdminController的控制器,该控制器需要我在appsettings.json中设置的用户名/密码,而不必使用成员资格/身份表? Admin的控制器只能由一个用户使用,密码可以是静态的

1 个答案:

答案 0 :(得分:0)

虽然我建议使用更好的身份验证方法(身份验证中间件或类似方法),但您可以添加一个类,并使用依赖注入的Startup中的ConfigureServices来获取您之后的内容。

下面粗略概述了如何做到这一点。我还没有测试过,所以可能需要修改。

<强> appsettings.json

...
"AdminLogin": {
    "userName": "Admin",
    "password": "secretsquirrel"
},
....

<强>型号:

public class AdminLogin
{
    public string userName { get; set; }
    public string password { get; set; }
}

<强> Startup.cs:

public void ConfigureServies(IServiceCollection services)
{
    ...
    services.Configure<AdminLogin>(Configuration.GetSection("AdminLogin"));
}

<强>控制器:

public class AdminController
{
    public AdminLogin adminLogin { get; }
    public AdminController(IOptions<AdminLogin> adminLogin)
    {
        this.adminLogin = adminLogin.Value;
    }

    public string Login(string userName, string password)
    {
        if(userName == adminLogin.userName && password == adminLogin.password)
        {
             return "Woo logged in";
        }
        else "Incorrect username and/or password";
    }
}