如何实现返回会话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方法来销毁会话,这是不可能的,因为它在那里描述。
首先:你如何确保会话被"销毁"?你不能确定。用户可能会失去网络连接或硬关机。
现在,我来回答你的问题……一种:你需要的是一个会过期的令牌。这将确保用户在一段时间后登出。您可以设置一个相对较短的过期时间,然后确保在用户使用密钥访问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/