如何实现返回会话id的WebApi方法

本文关键字:id 会话 WebApi 方法 返回 何实现 实现 | 更新日期: 2023-09-27 18:18:41

我想用ASP实现一个身份验证服务器。. NET标识用于移动应用程序。但我不想使用默认的身份验证方法。我想实现一个WebApi方法,它通过登录和密码为用户创建会话,并返回会话id。因此,在移动应用程序中,我将为每个向服务器发出的请求添加此会话id作为json参数。

请给我一个例子,我如何实现它?我已经阅读了这篇文章http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/,但我还需要一个WebApi方法来销毁会话,这是不可能的,因为它在那里描述。

如何实现返回会话id的WebApi方法

首先:你如何确保会话被"销毁"?你不能确定。用户可能会失去网络连接或硬关机。

现在,我来回答你的问题……一种:你需要的是一个会过期的令牌。这将确保用户在一段时间后登出。您可以设置一个相对较短的过期时间,然后确保在用户使用密钥访问web服务时重置此时间。

Taiseer关于Bit of Tech的教程非常棒,用于理解身份框架和基于令牌的身份验证的基础知识。

Taiseer在Startup.cs中配置OAuth时设置了访问令牌的过期时间:

public void ConfigureOAuth(IAppBuilder app)
    {
        OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions()
        {
            AllowInsecureHttp = true,
            TokenEndpointPath = new PathString("/token"),
            AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),  //<---- Right here
            Provider = new SimpleAuthorizationServerProvider()
        };
        // Token Generation
        app.UseOAuthAuthorizationServer(OAuthServerOptions);
        app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
    }

你可以这样做:

AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(30)

那么您必须在每次使用令牌时找到一种刷新令牌生存期的方法。目前我没有什么建议给你,但也许别人有。您可以通过重写AuthorizeAttribute来做到这一点。

Taiseer也有一个很好的关于RefreshTokens的指南,可能会派上用场:http://bitoftech.net/2014/07/16/enable-oauth-refresh-tokens-angularjs-app-using-asp-net-web-api-2-owin/