1

我有一个 ASP.NET Web API 应用程序,我正在尝试使我的 API 调用安全且仅对注册用户可用。

我知道注册用户可以通过调用 /Token 并发送用户名和密码以及 grant_type 以及请求来获取访问令牌。

我了解这一切都是因为Startup.Auth.cs文件App_start夹中的文件内有以下配置:

OAuthOptions = new OAuthAuthorizationServerOptions
{
    TokenEndpointPath = new PathString("/Token"),
    Provider = new ApplicationOAuthProvider(PublicClientId),
    AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
    AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
    // In production mode set AllowInsecureHttp = false
    AllowInsecureHttp = true
};

通常使用用户名和密码调用 /Token 会搜索默认用户表,如果该用户存在,则它将访问令牌发送给用户。

但是在我的项目中,我有自己的方法/表来注册用户并将它们存储在数据库中。所以我没有使用 ASP.NET Identity 提供的默认用户表。

问题:

我是否有可能以某种方式覆盖/更改对 /Token 的请求的处理方式?所以在那里我可以通过我自己的自定义用户表检查用户名/密码,然后在一切正常的情况下发送访问令牌。

编辑:

我想了一个办法,但我真的怀疑这应该是要走的路。在我自己注册用户的自定义方法中,当一切正常时,我可以调用

var user = new ApplicationUser() { UserName = model.Email, Email = model.Email };
IdentityResult result = await UserManager.CreateAsync(user, model.Password);
if (!result.Succeeded)
{
    // Return error
}

// Return success

现在我的用户也在 ASP.NET 用户表中,随后对 /Token 的调用应该将他们识别为注册用户。但我想现在我已经在两个表中复制了我的用户。有什么干净的方法可以实现我想要的吗?

4

0 回答 0