81
Gordon http://weisnote.blogspot.tw/

Asp.net identity overview

  • Upload
    -

  • View
    938

  • Download
    3

Embed Size (px)

Citation preview

Page 1: Asp.net identity overview

Gordon http://weisnote.blogspot.tw/

Page 2: Asp.net identity overview

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

2

Page 3: Asp.net identity overview
Page 4: Asp.net identity overview

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

4

Page 5: Asp.net identity overview
Page 6: Asp.net identity overview

something like...

Page 7: Asp.net identity overview
Page 8: Asp.net identity overview
Page 10: Asp.net identity overview

限定 SQL Server 然後 schema 沒得改

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

不能使用 OWIN

10

Page 11: Asp.net identity overview
Page 12: Asp.net identity overview

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

Page 14: Asp.net identity overview

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

Page 15: Asp.net identity overview

Claims Based ◦ 支援 Claims Based Identity Model (宣告式身分識別模型)

Social Login Providers ◦ 支援社群登入

Windows Azure Active Directory ◦ 可以用 Windows Azure AD 登入

OWIN Integration ◦ 整合 OWIN 把驗證放在 middleware

NuGet package ◦ 無腦安裝

15

Page 16: Asp.net identity overview

16

Page 17: Asp.net identity overview

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

17

Page 18: Asp.net identity overview

18

Page 19: Asp.net identity overview

19

Page 20: Asp.net identity overview

20

Page 21: Asp.net identity overview

21

Page 22: Asp.net identity overview

22

Page 23: Asp.net identity overview
Page 24: Asp.net identity overview
Page 25: Asp.net identity overview

/Models/IdentityModels.cs

25

Page 26: Asp.net identity overview

/Models/RegisterViewModel.cs

26

Page 27: Asp.net identity overview

/Views/Account/Register.cshtml

Page 28: Asp.net identity overview

/Controllers/AccountController

28

Page 29: Asp.net identity overview

29

Page 30: Asp.net identity overview

30

Page 31: Asp.net identity overview
Page 32: Asp.net identity overview

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

32

Page 33: Asp.net identity overview

/App_Start/RoleConfig.cs

33

Page 34: Asp.net identity overview

/Global.asax

34

Page 35: Asp.net identity overview

35 /Controllers/AccountController.cs

Page 36: Asp.net identity overview

36

Page 37: Asp.net identity overview

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

37

完全沒有畫面

Page 38: Asp.net identity overview

臉書為例

Page 39: Asp.net identity overview

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

39

Page 40: Asp.net identity overview

/App_Start/Startup.Auth.cs

40

Page 41: Asp.net identity overview

41

Page 42: Asp.net identity overview
Page 43: Asp.net identity overview

以 MongoDB 為例

Page 44: Asp.net identity overview

44

Page 45: Asp.net identity overview

45

Controller

UserManager<TUser>

UserStore<TUser>

EntityStore<TEntity>

public void Create(TEntity entity) public void Delete(TEntity entity) public virtual Task<TEntity> GetByIdAsync(object id) public DbContext Context { get; private set; } public DbSet<TEntity> DbEntitySet { get; private set; } public IQueryable<TEntity> EntitySet { get; private set; }

internal class EntityStore<TEntity> where TEntity: class

Page 46: Asp.net identity overview

46

Controller

UserManager<TUser> UserStore<TUser>

UserRepository

MongoHelper

UserClaim

UserLoginInfo

IdentityUser

ApplicationUser

Page 47: Asp.net identity overview

/Models/IdentityModels.cs

47

Page 48: Asp.net identity overview

/Controllers/AccountController.cs

48

Page 49: Asp.net identity overview

/Models/IdentityUser.cs

49

Page 50: Asp.net identity overview

50

Page 51: Asp.net identity overview

/Models/UserClaim.cs

51

Page 52: Asp.net identity overview

/Models/UserStore.cs ◦ IUserLoginStore<TUser> 對應使用者至登入提供者的介面

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

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

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

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

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

52

Page 53: Asp.net identity overview

https://mongolab.com/

53

Page 54: Asp.net identity overview

/Models/MongoHelper.cs

54

Page 55: Asp.net identity overview

55

Page 56: Asp.net identity overview

/Models/UserRepository.cs

56

Page 57: Asp.net identity overview

57

Page 58: Asp.net identity overview
Page 59: Asp.net identity overview

59

Page 60: Asp.net identity overview

60

Page 61: Asp.net identity overview

61

Page 62: Asp.net identity overview

62

Page 63: Asp.net identity overview

63

Page 64: Asp.net identity overview

64

Page 65: Asp.net identity overview

65

Page 66: Asp.net identity overview

66

Page 67: Asp.net identity overview

67

Page 68: Asp.net identity overview

68

Page 69: Asp.net identity overview

69

Page 70: Asp.net identity overview

70

Page 71: Asp.net identity overview

71

Page 72: Asp.net identity overview

72

Page 73: Asp.net identity overview
Page 74: Asp.net identity overview
Page 75: Asp.net identity overview
Page 76: Asp.net identity overview
Page 80: Asp.net identity overview

優點 ◦ 一秒生出會員登入 ◦ (部分)社群無痛登入 ◦ 一套 Identity通吃 ASP.NET MVC, Web Forms, Web Pages, Web API, SignalR

◦ 不是 SQL Server 也能用 ◦ 比較不會因為”人為因素” 被我的密碼沒加密 提名

缺點 ◦ 要學新東西 ˊ_>ˋ ◦ 架構不見得人人愛 ◦ UserManager 裡面的方法使用不當 效能會炸裂

◦ 部分 error message 是英文的 而且是 hard code

◦ 控制慾強烈的人無法忍受 ◦ 太新 有機率出現未爆彈

80

Page 81: Asp.net identity overview