C# 用户表数据已更新,但未反映在AuthorizationServerProvider';s";GrantResourceOwnerCredentials“;方法

C# 用户表数据已更新,但未反映在AuthorizationServerProvider';s";GrantResourceOwnerCredentials“;方法,c#,asp.net-web-api2,owin,autofac,dispose,C#,Asp.net Web Api2,Owin,Autofac,Dispose,基本上,我从用户表中删除了一个用户,之后使用相同的用户凭据登录。简言之,数据库更改不会反映在owin身份验证中 注意:我使用的删除用户实际上是在更新用户表中的“Deletedon”字段。我还在Owin中使用自定义数据上下文 重新启动IIS后工作正常。请帮助 以下是我在startup类中的ConfigureOAuth方法: public void配置OAuth(IAppBuilder应用程序) { var authService=DependencyResolver.Current.GetServ

基本上,我从用户表中删除了一个用户,之后使用相同的用户凭据登录。简言之,数据库更改不会反映在owin身份验证中

注意:我使用的删除用户实际上是在更新用户表中的“Deletedon”字段。我还在Owin中使用自定义数据上下文

重新启动IIS后工作正常。请帮助

以下是我在startup类中的ConfigureOAuth方法:

public void配置OAuth(IAppBuilder应用程序)
{
var authService=DependencyResolver.Current.GetService();
var userService=DependencyResolver.Current.GetService();
var loginHistoryService=DependencyResolver.Current.GetService();
//使用cookie临时存储有关使用第三方登录提供程序登录的用户的信息
OAuthBearerOptions=新的OAuthBeareAuthenticationOptions();
OAuthAuthorizationServerOptions OAuthServerOptions=新的OAuthAuthorizationServerOptions()
{
AllowInsecureHttp=true,
TokenEndpointPath=新路径字符串(“/token”),
AccessTokenExpireTimeSpan=TimeSpan.FromMinutes(30),
Provider=新的AuthorizationServerProvider(authService、userService、loginHistoryService),
RefreshTokenProvider=新的RefreshTokenProvider(authService)
};
//令牌生成
使用OAuthAuthorizationServer(OAuthServerOptions);
应用程序使用OAuthBeareAuthentication(OAuthBeareOptions);
}
以下是我的AuthorizationServerProvider类:

public override异步任务GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext)
{
var allowedOrigin=context.OwinContext.Get(“as:clientAllowedOrigin”);
如果(allowedOrigin==null)allowedOrigin=“*”;
context.OwinContext.Response.Headers.Add(“访问控制允许源代码”,new[]{allowedOrigin});
var user=await\u authService.ValidateUser(context.UserName,context.Password);
if(user==false)
{
SetError(“无效的授权”,“用户名或密码不正确”);
返回;
}
var identity=newclaimsidentity(context.Options.AuthenticationType);
AddClaim(新声明(ClaimTypes.Name,context.UserName));
identity.AddClaim(新索赔(ClaimTypes.Role,“客户”);
identity.AddClaim(新声明(“sub”,context.UserName));
var userInformation=wait_userService.GetUserDetails(context.UserName,context.Password);
if(userInformation!=null)
{
/*插入到登录历史记录*/
_loginHistoryService.Create(userInformation.Id);
}
var props=新的AuthenticationProperties(新字典
{
{
“as:client_id”,(context.ClientId==null)?string.Empty:context.ClientId
},
{
“用户名”,context.userName
},
{
“UserId”,userInformation.Id.ToString()
},
{
“BranchId”,userInformation.BranchId.ToString()
},
{
“Name”,userInformation.Name.ToString()
}
});
var票证=新的身份验证票证(身份、道具);
上下文。已验证(票证);
}

\u authService.ValidateUser
提供旧的(未更新的)用户数据。

您的
IAuthService
实现是否以某种方式缓存凭据验证的结果?对于您来说,了解它的配置方式非常重要,在应用程序的生命周期中,
IAuthService
IUserService
ILoginHistoryService
的单个实例都有效。感谢您的建议……我通过在查询中添加“.AsNoTracking()”得到了答案。(_context.Users.AsNoTracking())。。。。