使用asp.net核心身份将数据存储在cookie中
发布时间:2020-12-16 00:04:31 所属栏目:asp.Net 来源:网络整理
导读:我正在使用带有EF端的ASP.NET核心身份我想在身份验证cookie中存储与用户相关的数据. 这就是我以前使用ASP.NET 4.6的方式(appcontext是要存储的数据): public static void IdentitySignin(AppContext appContext,string providerKey = null,bool isPersisten
我正在使用带有EF端的ASP.NET核心身份我想在身份验证cookie中存储与用户相关的数据.
这就是我以前使用ASP.NET 4.6的方式(appcontext是要存储的数据): public static void IdentitySignin(AppContext appContext,string providerKey = null,bool isPersistent = false) { var claims = new List<Claim>(); // create *required* claims claims.Add(new Claim(ClaimTypes.NameIdentifier,appContext.UserId.ToString())); claims.Add(new Claim(ClaimTypes.Name,appContext.UserName)); // serialized AppUserState object claims.Add(new Claim("appcontext" + EZA.Store.AppContext.Version,appContext.ToString())); var identity = new ClaimsIdentity(claims,DefaultAuthenticationTypes.ApplicationCookie); // add to user here! AuthenticationManager.SignIn(new AuthenticationProperties() { AllowRefresh = true,IsPersistent = isPersistent,ExpiresUtc = DateTime.UtcNow.AddDays(7),},identity); } 但现在我正在使用ASP.NET身份与EF,我找不到一种方法来存储cookie中的一些数据. 解决方法
使用UserManager的AddClaimsAsync或AddClaimAsync< YourUserIdentity>.例如,当您登录用户时,请执行以下操作:
public class AccountController : Controller { public UserManager<YourUserIdentity> UserManager { get; private set; } public SignInManager<YourUserIdentity> SignInManager { get; private set; } public AccountController(UserManager<YourUserIdentity> userManager,SignInManager<YourUserIdentity> signInManager) { UserManager = userManager; SignInManager = signInManager; } public async Task<IActionResult> Login(LoginViewModel model,string returnUrl = null) { if (ModelState.IsValid) { var user = await UserManager.FindByNameAsync(model.UserName); await UserManager.AddClaimAsync(user,new Claim("your-claim","your-value")); var signInStatus = await SignInManager.PasswordSignInAsync(user,model.Password,model.RememberMe,lockoutOnFailure: false); if (signInStatus.Succeeded) return RedirectToLocal(returnUrl); ModelState.AddModelError("","Invalid username or password."); return View(model); } // If we got this far,something failed,redisplay form return View("Index",new LoginPageViewModel() { Login = model }); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
推荐文章
站长推荐
- asp.net-core – project.json版本控制格式
- asp.net-mvc-4 – 我似乎没有安装SignalR与MVC4
- asp.net-mvc – 什么是HtmlHelper渲染htmlAttrib
- asp.net – KnockoutJS,在ajax调用后更新ViewMod
- 页面生成时间 – ASP.Net MVC
- .net – 带标准短语的免费/开源resx文件
- asp.net – 如何引用一个javascript文件?
- asp.net – jqgrid jsonReader配置
- asp.net-mvc-3 – 使用Ninject 2.2的MVC 3依赖注
- asp.net-mvc – EditorFor的Html(5)属性
热点阅读