SlideShare ist ein Scribd-Unternehmen logo
1 von 81
Downloaden Sie, um offline zu lesen
Gordon
http://weisnote.blogspot.tw/


只要是網站十之八九都會有一套會員機制

2
先別管這個了
你有聽過 ASP.NET Membership 嗎?

4
something like...


http://www.asp.net/identity/overview/gettingstarted/introduction-to-aspnet-identity

9


限定 SQL Server 然後 schema 沒得改



圍繞著關聯式設計 不適用於 NoSQL



不能使用 OWIN

10
http://blog.darkthread.net/post-2013-12-01-about-owin.aspx


http://www.asp.net/identity/overview/gettingstarted/introduction-to-aspnet-identity

13








One ASP.NET Identity system
◦ ASP.NET MVC, Web Forms, Web Pages, Web API, SignalR
通吃
Ease of plugging in profile data about the user
◦ 易於擴充 profile data
Unit testability
◦ 易於單元測試
Role provider
◦ 支援角色管理

14










Claims Based
◦ 支援 Claims Based Identity Model (宣告式身分識別模型)
Social Login Providers
◦ 支援社群登入
Windows Azure Active Directory
◦ 可以用 Windows Azure AD 登入
OWIN Integration
◦ 整合 OWIN 把驗證放在 middleware
NuGet package
◦ 無腦安裝

15
16


有沒有一開專案就有會員功能的八卦?

17
18
19
20
21
22


/Models/IdentityModels.cs

25


/Models/RegisterViewModel.cs

26


/Views/Account/Register.cshtml


/Controllers/AccountController

28
29
30




每個網站的角色權限邏輯各異
自由發揮
來看看最常見的 Admin 怎麼玩

32


/App_Start/RoleConfig.cs

33


/Global.asax

34
/Controllers/AccountController.cs

35
36




有 Admin 角色的 User 可以連進 /admin/index
沒 Admin 角色的 User 會被導到登入頁
沒啥好看的

完全沒有畫面

37
臉書為例





取得應用程式編號 (appId)
取得應用程式密鑰 (appSecret)
新增平台 選 “網站”
設定 ”網站URL”

39


/App_Start/Startup.Auth.cs

40
41
以 MongoDB 為例
44
Controller

UserManager<TUser>

internal class EntityStore<TEntity> where TEntity: class
public void Create(TEntity entity)
public void Delete(TEntity entity)

UserStore<TUser>

public virtual Task<TEntity> GetByIdAsync(object id)
public DbContext Context { get; private set; }
public DbSet<TEntity> DbEntitySet { get; private set; }

EntityStore<TEntity>

public IQueryable<TEntity> EntitySet { get; private set; }

45
Controller

ApplicationUser
IdentityUser

UserManager<TUser>

UserStore<TUser>

UserLoginInfo
UserClaim

UserRepository

MongoHelper

46


/Models/IdentityModels.cs

47


/Controllers/AccountController.cs

48


/Models/IdentityUser.cs

49
50


/Models/UserClaim.cs

51


/Models/UserStore.cs
◦ IUserLoginStore<TUser>

 對應使用者至登入提供者的介面

◦ IUserClaimStore<TUser>
 儲存使用者指定宣告

◦ IUserRoleStore<TUser>
 對應使用者至登入提供者的介面

◦ IUserPasswordStore<TUser>
 儲存使用者的密碼雜湊

◦ IUserSecurityStampStore<TUser>
 儲存使用者的安全性戳記

◦ IUserStore<TUser>
 公開基本使用者管理的介面

52


https://mongolab.com/

53


/Models/MongoHelper.cs

54
55


/Models/UserRepository.cs

56
57
59
60
61
62
63
64
65
66
67
68
69
70
71
72


https://github.com/neverlostmine/MongoUs
erStore

77


http://www.youtube.com/watch?v=B4gl9KADN
ZI&list=PLLQgkMVoGtcvjcDJhMEcQtick0QigZR
ag

78


http://brockallen.com/2013/10/20/thegood-the-bad-and-the-ugly-of-asp-netidentity/#ugly

79


優點
◦ 一秒生出會員登入
◦ (部分)社群無痛登入
◦ 一套 Identity通吃 ASP.NET
MVC, Web Forms, Web
Pages, Web API, SignalR
◦ 不是 SQL Server 也能用
◦ 比較不會因為”人為因素” 被
我的密碼沒加密 提名



缺點
◦ 要學新東西 ˊ_>ˋ
◦ 架構不見得人人愛
◦ UserManager 裡面的方法使
用不當 效能會炸裂
◦ 部分 error message 是英文
的 而且是 hard code
◦ 控制慾強烈的人無法忍受
◦ 太新 有機率出現未爆彈

80
Asp.net identity overview

Weitere ähnliche Inhalte

Was ist angesagt?

KSDG-ASP.NET MVC 5 Overview (偽三國誌)
KSDG-ASP.NET MVC 5 Overview (偽三國誌)KSDG-ASP.NET MVC 5 Overview (偽三國誌)
KSDG-ASP.NET MVC 5 Overview (偽三國誌)Bruce Chen
 
Phpstorm使用经验分享
Phpstorm使用经验分享Phpstorm使用经验分享
Phpstorm使用经验分享振宇 吴
 
Servlet & JSP 教學手冊第二版 - 第 10 章:Web 容器安全管理
Servlet & JSP 教學手冊第二版 - 第 10 章:Web 容器安全管理Servlet & JSP 教學手冊第二版 - 第 10 章:Web 容器安全管理
Servlet & JSP 教學手冊第二版 - 第 10 章:Web 容器安全管理Justin Lin
 
使用Asp.net mvc搭配windows azure建構可擴展網站
使用Asp.net mvc搭配windows azure建構可擴展網站使用Asp.net mvc搭配windows azure建構可擴展網站
使用Asp.net mvc搭配windows azure建構可擴展網站Sky Chang
 
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理Ch10 Web 容器安全管理
Ch10 Web 容器安全管理Justin Lin
 
網站系統安全及資料保護設計認知
網站系統安全及資料保護設計認知網站系統安全及資料保護設計認知
網站系統安全及資料保護設計認知Justin Lin
 
Test link 1.9 图文安装教程
Test link 1.9 图文安装教程Test link 1.9 图文安装教程
Test link 1.9 图文安装教程YUCHENG HU
 
輕鬆上手ASP.NET Web API 2.1.2
輕鬆上手ASP.NET Web API 2.1.2輕鬆上手ASP.NET Web API 2.1.2
輕鬆上手ASP.NET Web API 2.1.2Bruce Chen
 
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open CampAndrew Wu
 
在Windows azure平台上進行資料庫處理及架構設計
在Windows azure平台上進行資料庫處理及架構設計在Windows azure平台上進行資料庫處理及架構設計
在Windows azure平台上進行資料庫處理及架構設計Sky Chang
 
(2020-04)HPE SimpliVity node 關機
(2020-04)HPE SimpliVity node 關機(2020-04)HPE SimpliVity node 關機
(2020-04)HPE SimpliVity node 關機裝機安 Angelo
 
Microsoft Azure的20大常见安全漏洞与配置错误
Microsoft Azure的20大常见安全漏洞与配置错误Microsoft Azure的20大常见安全漏洞与配置错误
Microsoft Azure的20大常见安全漏洞与配置错误Cheah Eng Soon
 
Ch10 Web容器安全管理
Ch10 Web容器安全管理 Ch10 Web容器安全管理
Ch10 Web容器安全管理 Justin Lin
 

Was ist angesagt? (15)

KSDG-ASP.NET MVC 5 Overview (偽三國誌)
KSDG-ASP.NET MVC 5 Overview (偽三國誌)KSDG-ASP.NET MVC 5 Overview (偽三國誌)
KSDG-ASP.NET MVC 5 Overview (偽三國誌)
 
Phpstorm使用经验分享
Phpstorm使用经验分享Phpstorm使用经验分享
Phpstorm使用经验分享
 
Servlet & JSP 教學手冊第二版 - 第 10 章:Web 容器安全管理
Servlet & JSP 教學手冊第二版 - 第 10 章:Web 容器安全管理Servlet & JSP 教學手冊第二版 - 第 10 章:Web 容器安全管理
Servlet & JSP 教學手冊第二版 - 第 10 章:Web 容器安全管理
 
使用Asp.net mvc搭配windows azure建構可擴展網站
使用Asp.net mvc搭配windows azure建構可擴展網站使用Asp.net mvc搭配windows azure建構可擴展網站
使用Asp.net mvc搭配windows azure建構可擴展網站
 
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
 
網站系統安全及資料保護設計認知
網站系統安全及資料保護設計認知網站系統安全及資料保護設計認知
網站系統安全及資料保護設計認知
 
Test link 1.9 图文安装教程
Test link 1.9 图文安装教程Test link 1.9 图文安装教程
Test link 1.9 图文安装教程
 
Make-a-blog
Make-a-blogMake-a-blog
Make-a-blog
 
輕鬆上手ASP.NET Web API 2.1.2
輕鬆上手ASP.NET Web API 2.1.2輕鬆上手ASP.NET Web API 2.1.2
輕鬆上手ASP.NET Web API 2.1.2
 
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
 
新员工培训
新员工培训新员工培训
新员工培训
 
在Windows azure平台上進行資料庫處理及架構設計
在Windows azure平台上進行資料庫處理及架構設計在Windows azure平台上進行資料庫處理及架構設計
在Windows azure平台上進行資料庫處理及架構設計
 
(2020-04)HPE SimpliVity node 關機
(2020-04)HPE SimpliVity node 關機(2020-04)HPE SimpliVity node 關機
(2020-04)HPE SimpliVity node 關機
 
Microsoft Azure的20大常见安全漏洞与配置错误
Microsoft Azure的20大常见安全漏洞与配置错误Microsoft Azure的20大常见安全漏洞与配置错误
Microsoft Azure的20大常见安全漏洞与配置错误
 
Ch10 Web容器安全管理
Ch10 Web容器安全管理 Ch10 Web容器安全管理
Ch10 Web容器安全管理
 

Andere mochten auch

那 Angular 那 AJAX 那 RESTful
那 Angular 那 AJAX 那 RESTful那 Angular 那 AJAX 那 RESTful
那 Angular 那 AJAX 那 RESTful功豪 魏
 
Asp.net identity dot netconf
Asp.net identity dot netconfAsp.net identity dot netconf
Asp.net identity dot netconfrustd
 
Asp.Net Identity
Asp.Net IdentityAsp.Net Identity
Asp.Net IdentityMarwa Ahmad
 
Asp.Net Mvc 5 Identity
Asp.Net Mvc 5 IdentityAsp.Net Mvc 5 Identity
Asp.Net Mvc 5 IdentityÜnal Ün
 
What's New in ASP.NET Identity - TRINUG Sept 2014
What's New in ASP.NET Identity - TRINUG Sept 2014What's New in ASP.NET Identity - TRINUG Sept 2014
What's New in ASP.NET Identity - TRINUG Sept 2014Derek Smith
 
Bring your own authentication to mvc
Bring your own authentication to mvcBring your own authentication to mvc
Bring your own authentication to mvcShayne Boyer
 
JavaScript Event - 圆业
JavaScript Event - 圆业JavaScript Event - 圆业
JavaScript Event - 圆业taobao.com
 

Andere mochten auch (8)

那 Angular 那 AJAX 那 RESTful
那 Angular 那 AJAX 那 RESTful那 Angular 那 AJAX 那 RESTful
那 Angular 那 AJAX 那 RESTful
 
Asp.net identity dot netconf
Asp.net identity dot netconfAsp.net identity dot netconf
Asp.net identity dot netconf
 
Asp.Net Identity
Asp.Net IdentityAsp.Net Identity
Asp.Net Identity
 
Asp.Net Mvc 5 Identity
Asp.Net Mvc 5 IdentityAsp.Net Mvc 5 Identity
Asp.Net Mvc 5 Identity
 
What's New in ASP.NET Identity - TRINUG Sept 2014
What's New in ASP.NET Identity - TRINUG Sept 2014What's New in ASP.NET Identity - TRINUG Sept 2014
What's New in ASP.NET Identity - TRINUG Sept 2014
 
Advanced Asp.Net Concepts And Constructs
Advanced Asp.Net Concepts And ConstructsAdvanced Asp.Net Concepts And Constructs
Advanced Asp.Net Concepts And Constructs
 
Bring your own authentication to mvc
Bring your own authentication to mvcBring your own authentication to mvc
Bring your own authentication to mvc
 
JavaScript Event - 圆业
JavaScript Event - 圆业JavaScript Event - 圆业
JavaScript Event - 圆业
 

Ähnlich wie Asp.net identity overview

Bruce-輕鬆上手Asp.net web api 2.1.2
Bruce-輕鬆上手Asp.net web api 2.1.2Bruce-輕鬆上手Asp.net web api 2.1.2
Bruce-輕鬆上手Asp.net web api 2.1.2Study4TW
 
twMVC#42 讓我們用一種方式來開發吧
twMVC#42 讓我們用一種方式來開發吧twMVC#42 讓我們用一種方式來開發吧
twMVC#42 讓我們用一種方式來開發吧twMVC
 
Struts快速学习指南
Struts快速学习指南Struts快速学习指南
Struts快速学习指南yiditushe
 
微軟實戰課程日:玩轉雲端 技術與架構
微軟實戰課程日:玩轉雲端 技術與架構微軟實戰課程日:玩轉雲端 技術與架構
微軟實戰課程日:玩轉雲端 技術與架構Jeff Chu
 
11个步骤应用Spring Security 3
11个步骤应用Spring Security 311个步骤应用Spring Security 3
11个步骤应用Spring Security 3Underwind
 
How to ASP.NET MVC4
How to ASP.NET MVC4How to ASP.NET MVC4
How to ASP.NET MVC4Daniel Chou
 
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit TestingASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing江華 奚
 
Single-Page Application Design Principles 101
Single-Page Application Design Principles 101Single-Page Application Design Principles 101
Single-Page Application Design Principles 101Jollen Chen
 
移动互联网服务端架构介绍
移动互联网服务端架构介绍移动互联网服务端架构介绍
移动互联网服务端架构介绍arganzheng
 
20130823微軟雲端平台開發者日
20130823微軟雲端平台開發者日20130823微軟雲端平台開發者日
20130823微軟雲端平台開發者日twMVC
 
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)Duran Hsieh
 
GlassFish特性介绍
GlassFish特性介绍GlassFish特性介绍
GlassFish特性介绍Jim Jiang
 
ASP.NET Core 2.1設計新思維與新發展
ASP.NET  Core 2.1設計新思維與新發展ASP.NET  Core 2.1設計新思維與新發展
ASP.NET Core 2.1設計新思維與新發展江華 奚
 
新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)锐 张
 
0418 Windows Server 2008 深入研究 IIS 7.0 委派管理
0418 Windows Server 2008 深入研究 IIS 7.0 委派管理0418 Windows Server 2008 深入研究 IIS 7.0 委派管理
0418 Windows Server 2008 深入研究 IIS 7.0 委派管理Timothy Chen
 
Asp.net mvc 從無到有 -twMVC#2
Asp.net mvc 從無到有 -twMVC#2Asp.net mvc 從無到有 -twMVC#2
Asp.net mvc 從無到有 -twMVC#2twMVC
 
twMVC#02 | ASP.NET MVC 從無到有
twMVC#02 | ASP.NET MVC 從無到有twMVC#02 | ASP.NET MVC 從無到有
twMVC#02 | ASP.NET MVC 從無到有twMVC
 
Ibatis技术讲座
Ibatis技术讲座Ibatis技术讲座
Ibatis技术讲座xujie
 
ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索Will Huang
 
Real World ASP.NET MVC
Real World ASP.NET MVCReal World ASP.NET MVC
Real World ASP.NET MVCjeffz
 

Ähnlich wie Asp.net identity overview (20)

Bruce-輕鬆上手Asp.net web api 2.1.2
Bruce-輕鬆上手Asp.net web api 2.1.2Bruce-輕鬆上手Asp.net web api 2.1.2
Bruce-輕鬆上手Asp.net web api 2.1.2
 
twMVC#42 讓我們用一種方式來開發吧
twMVC#42 讓我們用一種方式來開發吧twMVC#42 讓我們用一種方式來開發吧
twMVC#42 讓我們用一種方式來開發吧
 
Struts快速学习指南
Struts快速学习指南Struts快速学习指南
Struts快速学习指南
 
微軟實戰課程日:玩轉雲端 技術與架構
微軟實戰課程日:玩轉雲端 技術與架構微軟實戰課程日:玩轉雲端 技術與架構
微軟實戰課程日:玩轉雲端 技術與架構
 
11个步骤应用Spring Security 3
11个步骤应用Spring Security 311个步骤应用Spring Security 3
11个步骤应用Spring Security 3
 
How to ASP.NET MVC4
How to ASP.NET MVC4How to ASP.NET MVC4
How to ASP.NET MVC4
 
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit TestingASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing
 
Single-Page Application Design Principles 101
Single-Page Application Design Principles 101Single-Page Application Design Principles 101
Single-Page Application Design Principles 101
 
移动互联网服务端架构介绍
移动互联网服务端架构介绍移动互联网服务端架构介绍
移动互联网服务端架构介绍
 
20130823微軟雲端平台開發者日
20130823微軟雲端平台開發者日20130823微軟雲端平台開發者日
20130823微軟雲端平台開發者日
 
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)
 
GlassFish特性介绍
GlassFish特性介绍GlassFish特性介绍
GlassFish特性介绍
 
ASP.NET Core 2.1設計新思維與新發展
ASP.NET  Core 2.1設計新思維與新發展ASP.NET  Core 2.1設計新思維與新發展
ASP.NET Core 2.1設計新思維與新發展
 
新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)
 
0418 Windows Server 2008 深入研究 IIS 7.0 委派管理
0418 Windows Server 2008 深入研究 IIS 7.0 委派管理0418 Windows Server 2008 深入研究 IIS 7.0 委派管理
0418 Windows Server 2008 深入研究 IIS 7.0 委派管理
 
Asp.net mvc 從無到有 -twMVC#2
Asp.net mvc 從無到有 -twMVC#2Asp.net mvc 從無到有 -twMVC#2
Asp.net mvc 從無到有 -twMVC#2
 
twMVC#02 | ASP.NET MVC 從無到有
twMVC#02 | ASP.NET MVC 從無到有twMVC#02 | ASP.NET MVC 從無到有
twMVC#02 | ASP.NET MVC 從無到有
 
Ibatis技术讲座
Ibatis技术讲座Ibatis技术讲座
Ibatis技术讲座
 
ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索
 
Real World ASP.NET MVC
Real World ASP.NET MVCReal World ASP.NET MVC
Real World ASP.NET MVC
 

Asp.net identity overview