使用asp.net核心身份将数据存储在cookie中
发布时间:2020-05-23 22:15:49 所属栏目:asp.Net 来源:互联网
导读:我正在使用带有EF端的ASP.NET核心身份我想在身份验证cookie中存储与用户相关的数据. 这就是我以前使用ASP.NET 4.6的方式(appcontext是要存储的数据): public static void IdentitySignin(AppContext appContext, string providerKey = null, bool isPersiste
|
我正在使用带有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-mvc-3 – 分页/排序不适用于部分视图中使
- entity-framework – 如果EF 5,如何定义自定义命
- asp.net-mvc – FileStreamResult和FilePathResu
- asp.net-mvc – Request.GetOwinContext在单元测
- dependency-injection – 从ILogger访问当前的Ht
- asp.net-mvc-4 – 如何获取没有隐藏输入的AntiFo
- asp.net – ASP .net当前物理位置
- asp.net – 分类失败.返回未最终内容
- asp.net – 两次调用HttpModule EndRequest处理程
- 如何用Asp.net中的javascript检测IE 11
热点阅读
