【问题标题】:Authenticate Users However I want验证用户但是我想要
【发布时间】:2014-05-02 04:30:13
【问题描述】:

我正在查看 Web API 2 以及我创建的一个项目作为“概念证明”。我正在尝试查看在哪里注入自己的代码以进行客户身份验证。我有一个内部身份验证/登录服务,我想调用它来确定登录凭据是否有效,然后如果它有效则获取用户值(id、角色等)。

我使用“个人帐户”作为身份验证类型创建了项目,但我很难弄清楚我将在哪里调用我的服务,然后将结果映射到 IdentityUser(或某些 IUser)对象。

在生成的ApplicationOAuthProvider 类中,有一些代码可以从上下文对象传递用户名和密码,如下所示:

public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
    using (UserManager<IdentityUser> userManager = _userManagerFactory())
    {
        IdentityUser user = await userManager.FindAsync(context.UserName, context.Password);
    // ...

如何接听电话?

【问题讨论】:

    标签: asp.net-mvc authentication asp.net-web-api asp.net-web-api2


    【解决方案1】:

    你应该这样做:

    【讨论】:

    • 如何使用我选择的身份验证类型获得的样板代码?我想保留不记名令牌,因为我正在制作原型的服务将用于移动应用程序和移动 Web 客户端。我认为,如果可能的话,让生成的代码适合我的情况是有益的,而不是从头开始编写所有功能。
    • 您将使用来自请求的凭据,使用消息处理程序,然后访问 auth/login 服务以获取有效的用户值(id、角色等)。您可以保留角色的默认授权过滤器。
    • 知道了,也许我需要重新考虑我的实现,因为我想阻止每个客户端请求发送用户名/密码凭据。
    • 您可以创建一个自定义令牌并将其发回说它已通过身份验证,但您需要创建自己的 AuthorizationFilter 以检查此令牌。
    猜你喜欢
    • 1970-01-01
    • 2016-07-31
    • 1970-01-01
    • 1970-01-01
    • 2023-02-09
    • 1970-01-01
    • 1970-01-01
    • 2017-06-11
    • 1970-01-01
    相关资源
    最近更新 更多