zoukankan      html  css  js  c++  java
  • 使用Asp.net Identity 创建用户 、登录代码

    1、Identity 1中的注册、登录、注销代码

    vs 2013中自带的注册用户代码:

    1、首先创建一个ApplicationUser 初始化用户名。

    2、使用UserManager创建一个用户,用使用用户名,和密码初始化。  第一步、第二步创建了用户 user。 

    4、使用UserManager 创建一个基于声明的身份,可以指明创建Cookie类型,可以指明创建Cookie类型。可以加入多个声明,比如用户角色。

    3、使用AuthenticationManager SignIn 使用了OWIN 实现用户登录。

    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> Register(RegisterViewModel model)
    {
        if (ModelState.IsValid)
        {
            var user = new ApplicationUser() { UserName = model.UserName };
            var result = await UserManager.CreateAsync(user, model.Password);
            if (result.Succeeded)
            {
                await SignInAsync(user, isPersistent: false);
                return RedirectToAction("Index", "Home");
            }
            else
            {
                AddErrors(result);
            }
        }
    
        // If we got this far, something failed, redisplay form
        return View(model);
    }
    //用户登录代码
    private async Task SignInAsync(ApplicationUser user, bool isPersistent)
    {
        AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
    
        var identity = await UserManager.CreateIdentityAsync(
           user, DefaultAuthenticationTypes.ApplicationCookie);
    
        AuthenticationManager.SignIn(
           new AuthenticationProperties() { 
              IsPersistent = isPersistent 
           }, identity);
    }
    vs 2013自带的登出代码:
    // POST: /Account/LogOff
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult LogOff()
    {
        AuthenticationManager.SignOut();
        return RedirectToAction("Index", "Home");
    }
    显示了OWIN AUthenticationManager.SingOut 方法,它类似于 WebForm 中的FormsAuthentication.SignOut 方法。

    2、Identity 2中的注册、登录、注销代码:
    注册:

    [AllowAnonymous]
    public ActionResult Register()
    {
    return View();
    }

    //
    // POST: /Account/Register
    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> Register(RegisterViewModel model)
    {
    if (ModelState.IsValid)
    {
    var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
    var result = await UserManager.CreateAsync(user, model.Password);
    if (result.Succeeded)
    {
    await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false);       //不使用密码登录

    // 有关如何启用帐户确认和密码重置的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkID=320771
    // 发送包含此链接的电子邮件
    // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
    // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
    // await UserManager.SendEmailAsync(user.Id, "确认你的帐户", "请通过单击 <a href="" + callbackUrl + "">這裏</a>来确认你的帐户");

    return RedirectToAction("Index", "Home");
    }
    AddErrors(result);
    }

    // 如果我们进行到这一步时某个地方出错,则重新显示表单
    return View(model);
    }

    2、登录:

    //
    // GET: /Account/Login
    [AllowAnonymous]
    public ActionResult Login(string returnUrl)
    {
    ViewBag.ReturnUrl = returnUrl;
    return View();
    }

    //
    // POST: /Account/Login
    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
    {
    if (!ModelState.IsValid)
    {
    return View(model);
    }

    // 这不会计入到为执行帐户锁定而统计的登录失败次数中
    // 若要在多次输入错误密码的情况下触发帐户锁定,请更改为 shouldLockout: true
    var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);  //使用密码登录
    switch (result)
    {
    case SignInStatus.Success:
    return RedirectToLocal(returnUrl);
    case SignInStatus.LockedOut:
    return View("Lockout");
    case SignInStatus.RequiresVerification:
    return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
    case SignInStatus.Failure:
    default:
    ModelState.AddModelError("", "无效的登录尝试。");
    return View(model);
    }
    }

    3、注销

    //
    // POST: /Account/LogOff
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult LogOff()
    {
    AuthenticationManager.SignOut();    //还是使用验证管理器注销。
    return RedirectToAction("Index", "Home");
    }

     
  • 相关阅读:
    delphi 指针 认识
    delphi Post数据到网页
    delphi将图片转换成Base64编码函数
    delphi 获取windows任务栏的高度
    获取当天是星期几,计算两个日期相隔时间
    博客园样式自定义(待更新)
    redux超易学三篇之三(一个逻辑完整的react-redux)
    redux超易学三篇之二(开始使用react-redux)
    redux超易学三篇之一(单独说redux)
    毕业季
  • 原文地址:https://www.cnblogs.com/liuyuanhao/p/4349568.html
Copyright © 2011-2022 走看看