我有由android应用程序使用的Web api 2应用程序。我在其中生成不记名令牌,并将该令牌保留在android应用中。更改托管服务器后出现的问题。 android应用中存在的所有令牌均无效。 Web API是否在任何文件中都在服务器上保留/保存承载令牌,以便我可以将所有用户的承载令牌从旧服务器复制到新服务器。
我的启动栏
public void Configuration(IAppBuilder app)
{
var myProvider = new MyAuthorizationServerProvider();
OAuthAuthorizationServerOptions options = new OAuthAuthorizationServerOptions
{
AllowInsecureHttp = true,TokenEndpointPath = new PathString("/token"),accessTokenExpireTimeSpan = TimeSpan.FromDays(364),Provider = myProvider
};
app.UseOAuthAuthorizationServer(options);
app.UseOAuthBearerauthentication(new OAuthBearerauthenticationOptions());
httpconfiguration config = new httpconfiguration();
WebApiConfig.Register(config);
}
MyAuthorizationServerProvider.cs
public class MyAuthorizationServerProvider : OAuthAuthorizationServerProvider
{
public override async Task ValidateclientAuthentication(OAuthValidateclientAuthenticationContext context)
{
context.Validated();
}
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
var identity = new ClaimsIdentity(context.Options.AuthenticationType);
var userDetail = new LoginService().login(context.username,context.Password);
if (!string.IsnullOrEmpty(userDetail.mobileNo))
{
identity.AddClaim(new Claim("userId",userDetail.userId.ToString()));
identity.AddClaim(new Claim(ClaimTypes.Role,userDetail.userRole));
identity.AddClaim(new Claim("mobileNo",context.username));
context.Validated(identity);
}
else
{
context.SetError("invalid_grant","OPT does not Match.");
return;
}
}
}
API控制器
[Authorize(Roles = "user")]
[HttpGet]
public HttpResponseMessage getanyData()
{
//.........
}