asp.net identity 介紹
Asp.Net Identity 設計目標
微軟在 asp.net 2.0 引入了 membership,為 asp.net 應用程式提供身份驗證和授權功能。membership 假定使用者在網站註冊,然後憑使用者名稱和密碼登入網站。現在這個假定已經不成立了,web 上社交網路興起,人們更傾向於使用社交網路登入網站。程式設計師的開發方式也產生了重大變化,單元測試現已成為開發中的主要關注點。membership 系統對社交網路登入和單元測試都不支援,已經不能適應現階段的需求了。為此微軟開發了 Asp.Net Identity,其目標是:
統一的標識系統
- 可在 asp.net 下所有開發框架下使用,包括 ASP.NET MVC, Web Forms, Web Pages, Web API, and SignalR。
- 可用於構建 web, phone,store 或混合應用程式
易於擴充套件使用者資料(User Profile)
程式設計師可以控制使用者資訊的架構。
持久化控制
預設情況下資料儲存在關係資料庫,使用實體框架 Code First 實現持久化機制。由於資料庫架構由程式設計師控制,可以更改表名和主鍵資料型別。也可以更改資料儲存方式,例如使用 SharePoint 或者 NoSQL 資料庫。
可進行單元測試
可以為用到 Asp.Net Identity 的程式碼編寫單元測試。
角色提供程式
允許基於角色進行授權
基於宣告的驗證
使用者的身份由一組宣告(Claims)表示。宣告對使用者標識的表現力好過角色。使用者和角色的關係只有“屬於”和“不屬於”,宣告可以對使用者進行更細緻的描述。
社交賬戶登入提供程式
允許使用 facebook,twitter 等社交賬號登入,同時在自己的應用程式中儲存使用者特定的資料。
Azure Active Directory
允許使用 Azure Active Directory 登入,同時在自己的應用程式中儲存使用者特定的資料。
OWIN 整合
ASP.NET 身份驗證基於 OWIN 中介軟體。ASP.NET Identity 對 System.Web 沒有依賴,是一個完全的 OWIN 框架。ASP.NET Identity 使用 OWIN 身份驗證,通過 OWIN CookieAuthentication 而不是 FormsAuthentication 生成 cookie。
NuGet 程式包
通過 NuGet 程式包,ASP.NET 開發小組可以在新功能和 bug 修復上快速迭代,並及時向開發者釋出。
相關程式包
Microsoft.AspNet.Identity.Core 包含 ASP.NET Identity 的核心介面
Microsoft.AspNet.Identity.OWIN 包含將 ASP.NET Identity 接入到 OWIN 身份驗證的功能,在需要呼叫 OWIN Cookie Authentication 生成 cookie 時使用
Microsoft.AspNet.Identity.EntityFramework 使用實體框架將使用者資料儲存到 SQL Server 資料庫
Asp.Net MVC 中的相關程式碼
新建專案 mvc 專案時選擇個人使用者驗證方式,專案模板會生成以下程式碼
在 AccountController.Register 方法中使用 UserManager<TUser, TKey> 的 CreateAsync 方法註冊使用者:
// AccountController[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); return RedirectToAction("Index", "Home"); } AddErrors(result); } return View(model); }
在 AccountController.Login 方法中使用 SignInManager<TUser, TKey> 的 PasswordSignInAsync 方法登入。
[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); } }
相關推薦
asp.net identity 介紹
Asp.Net Identity 設計目標微軟在 asp.net 2.0 引入了 membership,為 asp.net 應用程式提供身份驗證和授權功能。membership 假定使用者在網站註冊,然後憑使用者名稱和密碼登入網站。現在這個假定已經不成立了,web 上社交網路
Asp.Net.Identity認證不依賴Entity Framework實現方式
aps 新建 create exc spn sharp 個數 blank aspnet Asp.Net.Identity為何物請自行搜索,也可轉向此文章http://www.cnblogs.com/shanyou/p/3918178.html 本來微軟已經幫我們將授權、認證
ASP.net core 2.0.0 中 asp.net identity 2.0.0 的基本使用(一)
使用 相對路徑 註意 apps 模型視圖 hand getc 技術分享 star 開發環境:vs2017 版本:15.3.5 項目環境:.net framework 4.6.1 模板asp.net core 2.0 Web應用程序(模型視圖控制器) 身份
Asp.net Identity 修改默認數據庫,增加自定義字段
擴展 studio required ssa 字段 profile 服務器 cat fix visual studio 2013 先新建一個項目 選擇MVC,確定 打開 Views\Shared\_Layout.cshtml文件,按自己的要求修改 改 [ht
ASP.NET Core 介紹
intern www. gpo web api mark 源代碼 cti span client ASP.NET Core 是一個跨平臺的高性能開源框架,用於生成基於雲且連接 Internet 的新式應用程序。 使用 ASP.NET Core,可以: 生成 Web 應用和
使用ASP.NET Identity實現基於宣告的授權,高階篇
在這篇文章中,我將繼續ASP.NET Identity 之旅,這也是ASP.NET Identity 三部曲的最後一篇。在本文中,將為大家介紹ASP.NET Identity 的高階功能,它支援宣告式並且還可以靈活的與ASP.NET MVC 授權結合使用,同時,它還支援使用第
開始使用ASP.NET Identity,初級篇
在之前的文章中,我為大家介紹了OWIN和Katana,有了對它們的基本瞭解後,才能更好的去學習ASP.NET Identity,因為它已經對OWIN 有了良好的整合。在這篇文章中,我主要關注ASP.NET Identity的建立和使用,包括基礎類的搭建和使用者管理功能的實現—
探索ASP.NET Identity 身份驗證和基於角色的授權,中級篇
在前一篇文章中,我介紹了ASP.NET Identity 基本API的運用並建立了若干使用者賬號。那麼在本篇文章中,我將繼續ASP.NET Identity 之旅,向您展示如何運用ASP.NET Identity 進行身份驗證(Authentication)以及聯合ASP.N
ASP.NET Identity簡介及簡單使用
Why Identity?ASP.NET Identity wasdesigned to solve site membership requirements.一、Advantageof ASP.Net Identity微軟在.NET Framework 4.5 中推出了AS
應用程式框架實戰三十三:表現層及ASP.NET MVC介紹(二)
最近的更新速度越來越慢,主要是專案上比較忙,封裝EasyUi也要花很多時間。不過大家請放心,本系列不會半途夭折,並且程式碼乾貨也會持續更新。本文繼續介紹表現層和Asp.net Mvc,我將在本篇討論一些重要的設計問題和封裝技巧。 是否需要將控制器分離為獨立專案 經常有人問我,是否有必要將控制器從W
應用程式框架實戰三十:表現層及ASP.NET MVC介紹(一)
本文將介紹表現層及ASP.NET MVC的一些要點,特別是ASP.NET MVC的一些抽象和封裝技巧,如果你對MVC還不瞭解,可以參考《ASP.NET MVC4 高階程式設計》,作者Jon Galloway等,這本書由ASP.NET MVC團隊成員編寫,相當不錯。 表現層的職責 表現層的職責是展示
ASP.NET Identity入門系列教程(一) 初識Identity
摘要 通過本文你將瞭解ASP.NET身份驗證機制,表單認證的基本流程,ASP.NET Membership的一些弊端以及ASP.NET Identity的主要優勢。 目錄 身份驗證(Authentication)和授權(Authorization) 我們先來思考一個問題:如何構建安全的WEB應
ASP.NET MVC 隨想錄——開始使用ASP.NET Identity,初級篇
在之前的文章中,我為大家介紹了OWIN和Katana,有了對它們的基本瞭解後,才能更好的去學習ASP.NET Identity,因為它已經對OWIN 有了良好的整合。 在這篇文章中,我主要關注ASP.NET Identity的建立和使用,包括基礎類的搭建和使用者管理功能的實現—— 在後續文章中,我將
第7章 成員資格、授權(Authorize、ASP.NET Identity、OAuth和OpenID的外部登入)和安全性
7.1 安全性:無趣、但極其重要7.2 使用Authorize特性登入 使用Authorize特性來阻止使用者匿名訪問控制器或控制器操作。7.2.1 保護控制器操作情況1:單控制器 控制器上新增 [Authorize]特性情況2: 全部控制
ASP.NET Identity簡介
Why Identity? ASP.NET Identity wasdesigned to solve site membership requirements. 一、Advantageof ASP.NET Identity 微軟在.NET Framework 4
ASP.NET MVC 隨想錄—— 使用ASP.NET Identity實現基於宣告的授權,高階篇
在這篇文章中,我將繼續ASP.NET Identity 之旅,這也是ASP.NET Identity 三部曲的最後一篇。在本文中,將為大家介紹ASP.NET Identity 的高階功能,它支援宣告式並且還可以靈活的與ASP.NET MVC 授權結合使用,同時,它還支援使用第三方來實現身份驗證。 關於A
ASP.NET Identity 使用簡介
1. 什麼是 ASP.NET Identity ASP.NET Identity 是微軟推出,用於在ASP.NET應用中管理使用者的元件。 The mainstay for user management in recent years has been ASP.NET Membership, which
譯:Asp.Net Identity與Owin,到底誰是誰?
送給正在學習Asp.Net Identity的你 :-) Recently I have found an excellent question on Stackoverflow. The OP asks why does claim added to Ideneti
ASP.NET MVC4中的App_start中BundleConfig的介紹使用
自動配置 cat als sax 初始化 .cn 多個 屬性 要點 在BundleConfig.cs中,指定CSS和JS,主要用來壓縮JS和CSS 在ASP.NET MVC4中(在WebForm中應該也有),有一個叫做Bundle的東西,它用來將js和css進行壓縮