zoukankan      html  css  js  c++  java
  • [Solution] ASP.NET Identity(1) 快速入门

    本节将介绍:

    ASP.NET Identity简介

    身份管理在ASP.NET中存在很长世间了,ASP.NET 开发团队已经学会了很多从客户的反馈。

    用户越来越不喜欢在每个网站都单独注册一个账号,用户希望通过社交平台的账号,开发人员也希望如此。

    随着web的开发,单元测试页越来越重要。在2008年,Aspnet添加了MVC,部分原因是为了帮助开发人员构建单元测试。开发人员希望身份管理也可以单元测试。

    ASP.NET Identity遵循以下几点:

    1.一个身份系统。

    可以用在ASP.NET所有框架下,例如ASP.NET MVC,Web Forms,Web Pages,Web API以及SignalR。

    2.配置用户数据

    可以控制用户的配置信息。例如,启用系统来存储程序中注册账号的用户输入的出生日期。

    3.数据库

    默认情况下,ASP.NET Identity将存储所有用户数据,通过EF CodeFirst来改善持久性机制。这样就能轻松的跨数据库,如SharePoint,Azure Storage,NoSQL databases。

    4.单元测试

    ASP.NET Identity可以使你的web程序有更多的单元测试。

    5.提供角色功能

    有一个role provider方便你轻松的创建角色,如“Admin”和向角色添加用户。

    6.基于声明

    ASP.NET Identity支持基于声明的身份验证,其中用户的身份作为一组声明,声明允许开发者描述用户的身份,角色至少应该bool值(会员或非会员),声明可以包含大量的用户信息和会员信息。

    7.社交账号

    可以非常方便的将社交插件集成进来。如微软账号,Facebook等,和在你的程序中存储特定的用户数据。

    8.活动目录

    9.OWIN

    现在,ASP.NET Identity基于OWIN中间件,可以在任何基于OWIN的主机上使用。不依赖于System.Web程序集。

    ASP.NET Identity用OWIN Authentication用来登入登出。使用CookieAuthentication来操作。

    10.Nuget

    通过Nuget来管理ASP.NET Identity,这样bug修复,更新更快。

    快速入门

    在本例中,我们会说明项目模板如何使用 ASP.NET 身份来添加功能来注册、 登录和注销用户。

    1.创建MVC程序with个人身份

    2.创建的项目中会有3个程序用于ASP.NET Identity.

    3.创建用户

    运行项目,点击注册链接,注册用户。当填完注册信息后,点击注册按钮时。会执行以下Action。

    [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);
                    }
                }
    
                // 如果我们进行到这一步时某个地方出错,则重新显示表单
                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);
            }

    红色区域创建一个身份声明,声明包括用户所有声明信息,包括用户角色。你可以自定义声明内容。

    粉色区域通过OWIN登录系统。(生成Cookie)

    4.登出

    点击登出按钮,会触发以下Action

            [HttpPost]
            [ValidateAntiForgeryToken]
            public ActionResult LogOff()
            {
                AuthenticationManager.SignOut();
                return RedirectToAction("Index", "Home");
            }

    红色区域通过OWIN的FormsAuthentication登出系统。

    扩展

    1.ASP.NET Identity组件

    2.表结构

    使用ASP.NET Identity,会自动生成以下几张表。

    代码下载:点击下载

    本文作者:Never、C

    本文链接:http://www.cnblogs.com/neverc/p/4727024.html

    Identity:https://github.com/aspnet/Identity

  • 相关阅读:
    Scrum 冲刺博客第五篇
    Scrum 冲刺博客第四篇
    Scrum 冲刺博客第三篇
    ajax send()
    form action中get post传递参数的问题
    struts2 iterator中if标签的使用
    表格内容自动换行
    从js向Action传中文参数出现乱码问题的解决方法
    java开发环境搭建
    Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/
  • 原文地址:https://www.cnblogs.com/neverc/p/4727024.html
Copyright © 2011-2022 走看看