[英]How to access the database data in OnSignedIn .net Core - Entity framework
When a user signs in to a .net core MVC program, I need to view user-specific data from the database using logged in user id and save those data to current cookie.当用户登录到 .net 核心 MVC 程序时,我需要使用登录的用户 ID 从数据库中查看特定于用户的数据,并将这些数据保存到当前 cookie。 Following is the path I'm now taking.
以下是我现在走的路。 Show me how to do this if something is wrong.
如果出现问题,请告诉我如何执行此操作。
is there any way access like有什么办法可以访问吗
dbcontext.footable.where(x=> x.id = "somevalue")
Startup.cs启动.cs
services.ConfigureIdentitySettings(apiSetting);
ConfigureIdentitySettings.cs配置身份设置.cs
public static class IdentitySettingsExtensions
{
// Identity Setup
public static void ConfigureIdentitySettings(this IServiceCollection services, IConfigurationSection apiSetting)
{
services.ConfigureApplicationCookie(options =>
{
options.Cookie.Name = "foo";
options.ExpireTimeSpan = TimeSpan.FromMinutes(Configurations.ExipireTimeSpan);
options.ReturnUrlParameter = CookieAuthenticationDefaults.ReturnUrlParameter;
options.LoginPath = Configurations.LoginPath;
options.LogoutPath = Configurations.LogoutPath;
options.AccessDeniedPath = Configurations.AccessDeniedPath;
options.SlidingExpiration = true;
options.Events = new CookieAuthenticationEvents
{
OnSignedIn = context =>
{
// Here i got current logged in user id
var loggedInUserRole = context.Principal.GetLoggedInUserId();
//I need to access database data from here after that adding those data into current cookie
return Task.CompletedTask;
}
};
});
services.Configure<IdentityOptions>(options =>
{
// Providers
//options.Tokens.PasswordResetTokenProvider = PasswordResetTokenProviderName;
//options.Tokens.EmailConfirmationTokenProvider = ConfirmEmailTokenProviderName;
options.SignIn.RequireConfirmedEmail = true;
options.User.RequireUniqueEmail = true;
options.Password.RequireUppercase = Configurations.RequireUppercase;
options.Password.RequireLowercase = Configurations.RequireLowercase;
options.Password.RequireDigit = Configurations.RequireDigit;
options.Password.RequiredLength = Configurations.RequireLength;
options.Password.RequireNonAlphanumeric = Configurations.RequireNonAlphanumeric;
});
var firstLifeSpan = Convert.ToInt32(apiSetting["FirstEmailConfirmationLifeSpan"]);
var secondLifeSpan = Convert.ToInt32(apiSetting["SecondEmailConfirmationLifeSpan"]);
services.Configure<DataProtectionTokenProviderOptions>(o =>
o.TokenLifespan = TimeSpan.FromDays(firstLifeSpan > secondLifeSpan ? firstLifeSpan : secondLifeSpan));
}
}
You can access database data in OnSignedIn
method like below:您可以在
OnSignedIn
方法中访问数据库数据,如下所示:
services.ConfigureApplicationCookie(options =>
{
//...
options.Events = new CookieAuthenticationEvents
{
OnSignedIn = context =>
{
//Build an intermediate service provider
var sp = services.BuildServiceProvider();
//Resolve the services from the service provider
var myDbContext = sp.GetService<ApplicationDbContext>();
//access database data...
var data = myDbContext.footable.Where(x => x.Id== "xxx");
//...
return Task.CompletedTask;
}
};
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.