목차
머리말
이 블로그가 도움이 되셨다면 [추천]을 눌러주세요. .NET Core에 대한 정보를 정기적으로 공유하겠습니다. .NET Core 학습 경험에 대해 알아보세요. " >이 블로그가 도움이 되셨다면 [추천]을 눌러주세요. .NET Core에 대한 정보를 정기적으로 공유하겠습니다. .NET Core 학습 경험에 대해 알아보세요.
백엔드 개발 C#.Net 튜토리얼 ASP.NET Core에서 ID 시작하기

ASP.NET Core에서 ID 시작하기

Mar 12, 2017 pm 04:30 PM

머리말

ASP.NET Core에서는 사용자의 신원을 인증하는 ASP.NET의 Identity 구성 요소 라이브러리가 여전히 사용됩니다. 🎜>MVC 5는 너무 복잡합니다. MVC 5에 OWIN이 도입되었기 때문에 많은 초보자들이 ID에 대해 혼란스러워합니다. 저는 한 번 이상 ID에 대해 배웠습니다. 내부의 원리를 이해합니다. 따라서 대부분의 개발자는 Identity를 좋아하지 않으며 사용하지도 않습니다.

다행히 ASP.NET Core에서는 모듈의 추상화가 점차 명확해지고

미들웨어의 사용으로 인해 Identity의 학습 및 사용 경로가 더욱 복잡해집니다. 살펴보자.

시작하기

시작하기 전에

와의 관계, Entity Framework와의 관계를 먼저 잊어봅시다. Authentication

"

단어"가 너무 많아서 알아내야 할 수도 있습니다.

# 1: 주장

모두 신분증이 어떻게 생겼는지 아시나요?

ASP.NET Core에서 ID 시작하기

그 중

이름: 오바마 성별: 남자; ; 국적: 케냐; 생년: 1961.08.04 등. 이러한 신원 정보는 모두 키-값 쌍임을 알 수 있습니다. , 그렇다면 이러한 것들을 어떻게 저장하고 디자인할까요? 예, 저장을 위해 사전을 사용하는 것을 생각해 보셨을 것입니다. 와 값은 필요에 딱 맞습니다. 하지만 Key와 Value는 객체지향도 아닌 불친절한 느낌이 들기 때문에 객체로 만드는 것이 더 좋지 않을까요? 최소한 vs의 스마트 프롬프트를 사용할 수 있습니다. 이를 수정하여 다음과 같이 변경해 보겠습니다.

//我给对象取一个名字叫`Claim`你没有意见吧
public class Claim
{
    public string ClaimType { get; set; }

    public string ClaimValue { get; set; }
}
로그인 후 복사
ClaimType은 Key이고 ClaimValue는 Value를 나타냅니다. 이 경우

키-값 쌍을 저장할 수 있습니다. 이때 입금해도 되나요? 姓名:奥巴马

Microsoft 직원들은 매우 배려심이 깊어 우리를 위해 몇 가지 기본

을 준비했습니다. 일반적으로 사용되는 많은 것들이 여기에 있습니다. 살펴보겠습니다: ClaimType

여기서 첫 번째 지식 포인트를 확장합니다: ClaimTypes

ASP.NET Core에서 ID 시작하기

읽어본 경험상 스크린샷의 일부만 포함시켰습니다. Name,

Email, Gender, MobilePhone 등 자주 사용하는 것들이 이미 있고 그 외에도 많이 있는 것을 볼 수 있습니다. 주의 깊은 독자라면 네임스페이스 라는 사실을 알아차렸을 것입니다. 이는 이것이 .net System.Security.Claims 프레임워크 의 일부라는 것을 의미합니다. 글쎄, 그게 우리가 당분간 알아야 할 전부입니다. . 좋아요.

청구

소개가 완료되었습니다. 아주 간단하지 않나요? 다른 곳에서는 어떻게 번역해도 상관없습니다. “인증서 단위”.

# 2: ClaimsIdentity

"

인증서 단위"를 확보한 후 이를 사용하여 ID 카드를 생성할 수 있으며, 어떻게 해야 합니까? 만들어질까? 어떤 학생들은 '그래, 그냥 새 객체를 만든 다음 ID 카드 단위를 생성자 에 전달하면 ID 카드를 얻을 수 있다'고 생각했을 수도 있습니다. 이 ID 카드에는 "ClaimsIdentity"라는 이름이 붙었습니다. 구성 요소를 나타내는 Claims와 목적을 나타내는 Identity가 모두 포함되어 있어 매우 만족스러운 이름입니다.

실제로 우리 신분증의 정보 중 일부는 숨겨져 있고 일부는 직접 볼 수 있습니다. 예를 들어, 차세대 신분증에 저장된 지문 정보는 모두 신분증 내부 칩에 저장되어 있으므로 볼 수 없습니다. 객체를 디자인할 때도 마찬가지입니다. 따라서 여기서는 ClaimsIdentity가 이름, 레이블 등을 노출합니다.

我们造的身份证(ClaimsIdentity)还有一个重要的属性就是类型(AuthenticationType),等等,AuthenticationType是什么东西?看起来有点眼熟的样子。我们知道我们自己的身份证是干嘛的吧,就是用来证明我们的身份的,在你证明身份出示它的时候,其实它有很多种形式载体的,什么意思呢?比如你可以直接拿出实体形式的身份证,那也可以是纸张形式的复印件,也可以是电子形式的电子码等等,这个时候就需要有一个能够表示其存在形式的类型字段,对,这个AuthenticationType就是干这个事情的。

然后我们在给我们的身份证添加一些润色,让其看起来好看,比如提供一些方法添加 Claims 的,删除 Claims的,写到二进制流里面的啊等等,最终我们的身份证对象看起来基本上是这样了:

public class ClaimsIdentity
{
    public ClaimsIdentity(IEnumerable<Claim> claims){}
    
    //名字这么重要,当然不能让别人随便改啊,所以我不许 set,除了我儿子跟我姓,所以是 virtual 的
    public virtual string Name { get; }
    public string Label { get; set; }
    
    //这是我的证件类型,也很重要,同样不许 set
    public virtual string AuthenticationType { get; }
    
    public virtual void AddClaim(Claim claim);
    
    public virtual void RemoveClaim(Claim claim);
    
    public virtual void FindClaim(Claim claim);
}
로그인 후 복사

嗯,到这里,我们的身份证看起来似乎很完美了,但是从面向对象的角度来说好像还少了点什么东西? 对~,还是抽象,我们需要抽象出来一个接口来进行一些约束,约束什么呢?既然作为一个证件,那么肯定会涉及到这几个属性信息:
1、名字。2、类型。3、证件是否合法。
反应到接口里面的话就是如下,我们给接口取个名字叫:“身份(IIdentity)”:

这里延伸第二个知识点:IIdentity接口。

// 定义证件对象的基本功能。
public interface IIdentity
{
    //证件名称
    string Name { get; }
    
    // 用于标识证件的载体类型。
    string AuthenticationType { get; }
    
    //是否是合法的证件。
    bool IsAuthenticated { get; }
}
로그인 후 복사

所以我们的 ClaimsIdentity 最终看起来定义就是这样的了:

public class ClaimsIdentity : IIdentity
{
    //......
}
로그인 후 복사

ClaimsIdentity 介绍完毕,是不是发现也很简单,其他地方怎么翻译我不管,在本篇文章里面,它叫 “身份证”。

# 3: ClaimsPrincipal

有了身份证,我们就能证明我就是我了,有些时候一个人有很多张身份证,你猜这个人是干嘛的? 对,不是黄牛就是诈骗犯。

但是,有些时候一个人还有其他很多种身份,你猜这个人是干嘛的?这就很正常了对不对,比如你可以同时是一名教师,母亲,商人。如果你想证明你同时有这几种身份的时候,你可能需要出示教师证,你孩子的出生证,法人代表的营业执照证。

在程序中,一个身份证不仅仅代表你这个人了,而是代表一个身份,是证明你自己的主要身份哦。如果一个人还有其他很多种身份,这个时候就需要有一个东西(载体)来携带着这些证件了对吧?OK,我们给需要携带证件的这个对象取一个贴切点的名字,叫“证件当事人(ClaimsPrincipal)”吧。

以下是 Principal 这个单词在词典给出的解释,我用它你应该没意见吧:

principal  ['prɪnsəpl]  
adj. 主要的;资本的
n. 首长;校长;资本;当事人
로그인 후 복사

这个时候可能有同学会问了,是不是应该叫ClaimsIdentityPrincipal比较好呢?嗯,我也觉得应该叫 ClaimsIdentityPrincipal 可能更好一点,或许微软的人偷懒了,简写成了ClaimsPrincipal

知道其功能后,代码就很好写了,和上面ClaimsIdentity一样的套路:

public class ClaimsPrincipal 
{
    //把拥有的证件都给当事人
    public ClaimsPrincipal(IEnumerable<ClaimsIdentity> identities){}
    
    //当事人的主身份呢
    public virtual IIdentity Identity { get; }
    
    public virtual IEnumerable<ClaimsIdentity> Identities { get; }
    
    public virtual void AddIdentity(ClaimsIdentity identity);
    
    //为什么没有RemoveIdentity , 留给大家思考吧?
}
로그인 후 복사

当时人看起来也几乎完美了,但是我们还需要对其抽象一下,抽象哪些东西呢? 作为一个当事人,你应该有一个主身份吧,就是你的身份证咯,可能你还会用到角色(角色后面会详细介绍,这里你知道有这么个东西就行了)。

这里延伸第三个知识点:IPrincipal 接口。

public interface IPrincipal
{
    //身份
    IIdentity Identity { get; }
    
    //在否属于某个角色
    bool IsInRole(string role);
}
로그인 후 복사

然后,我们的 证件当事人 看起来应该是这样的:

public class ClaimsPrincipal : IPrincipal 
{
   //...
}
로그인 후 복사

ClaimsPrincipal 介绍完了,也很简单吧? 其他地方怎么翻译我不管,在本篇文章里面,它叫 “证件当事人”。

想在,我们已经知道了 “证件单元(Claims)” , “身份证(ClaimsIdentity)” , “证件当事人(ClaimsPrincipal)”,并且整理清楚了他们之间的逻辑关系,趁热打铁,下面这个图是一个identity登入部分的不完全示意图,虚线圈出来的部分应该可以看懂了吧:

ASP.NET Core에서 ID 시작하기

可以看出,首先我们在app这边有一些证件单元,然后调用ClaimsIdentity把证件单元初始化为一个身份证,然后再把身份证交给证件当事人由其保管。

才把 Getting Started 写完,发现已经这么长了,所以打算写成一个系列了,可能3 - 4篇吧。

미들웨어의 세부 사항을 벗겨보겠습니다. Identiy와 Entity를 살펴보세요. Framework에는 어떤 사랑/증오 관계가 있습니까?

이 블로그가 도움이 되셨다면 [추천]을 눌러주세요. .NET Core에 대한 정보를 정기적으로 공유하겠습니다. .NET Core 학습 경험에 대해 알아보세요.

위 내용은 ASP.NET Core에서 ID 시작하기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

SQL의 ID 속성은 무엇을 의미합니까? SQL의 ID 속성은 무엇을 의미합니까? Feb 19, 2024 am 11:24 AM

SQL에서 ID란 무엇입니까? SQL에서 ID는 자동 증가 숫자를 생성하는 데 사용되는 특수 데이터 유형으로, 테이블의 각 데이터 행을 고유하게 식별하는 데 사용됩니다. ID 열은 일반적으로 기본 키 열과 함께 사용되어 각 레코드에 고유한 식별자가 있는지 확인합니다. 이 문서에서는 Identity를 사용하는 방법과 몇 가지 실제 코드 예제를 자세히 설명합니다. Identity를 사용하는 기본 방법은 테이블을 생성할 때 Identit을 사용하는 것입니다.

지금 1달러 미만으로 투자할 수 있는 가장 저렴한 암호화폐 5가지 지금 1달러 미만으로 투자할 수 있는 가장 저렴한 암호화폐 5가지 Oct 21, 2024 pm 06:58 PM

다양한 지표가 새로운 알트코인 시즌의 시작을 암시하는 등 알트코인 시장은 주목할만한 랠리를 앞두고 있는 것으로 보입니다.

ASX Capital, stCORE를 통합하여 ASX 생태계 성능 향상 ASX Capital, stCORE를 통합하여 ASX 생태계 성능 향상 Nov 08, 2024 pm 06:28 PM

분산 금융은 사용자에게 단순한 것부터 복잡한 것까지 다양한 보상 획득 전략을 제공하며 ASX의 목표는 이러한 전략을 ASX 생태계의 기본 운영 체제에 통합하는 것입니다.

Web3의 다음 큰 베팅: Core의 Surge와 MinePro의 Bitcoin Bonanza. SEI는 계속해서 노력하고 있습니다. Web3의 다음 큰 베팅: Core의 Surge와 MinePro의 Bitcoin Bonanza. SEI는 계속해서 노력하고 있습니다. Aug 24, 2024 pm 03:27 PM

최근 몇 주 동안 고래들은 최근 암호화폐 시장의 급등세를 주시하며 가능성을 보여줄 뿐만 아니라 상당한 수익을 낼 수 있는 추진력을 갖춘 프로젝트를 찾고 있습니다.

1달러 미만으로 구매할 수 있는 가장 저렴한 암호화폐 5개 1달러 미만으로 구매할 수 있는 가장 저렴한 암호화폐 5개 Oct 28, 2024 am 03:18 AM

레이어 1 블록체인 Injective(INJ)와 AI 기반 블록체인 프로토콜 Fetch.AI(FET) 간의 잠재적인 협력이 투자자 커뮤니티에 긍정적인 신호를 보내면서 디지털 자산에 대한 관심이 높아지고 있습니다.

NFT 시장이 하락함에 따라 DeFi TVL은 7월에 3.5% 급등했으며 솔라나(SOL)가 빛을 발했습니다. NFT 시장이 하락함에 따라 DeFi TVL은 7월에 3.5% 급등했으며 솔라나(SOL)가 빛을 발했습니다. Aug 13, 2024 am 12:12 AM

7월에는 탈중앙화 금융(DeFi)에 고정된 총 가치(TVL)가 3.5% 급등해 해당 부문에 중요한 이정표를 세웠습니다.

이제 적절한 자금을 투입할 수 있는 High 5 Crypto: FET, SHIBASHOOT, CORE, SEI, SOL 이제 적절한 자금을 투입할 수 있는 High 5 Crypto: FET, SHIBASHOOT, CORE, SEI, SOL Aug 30, 2024 am 09:31 AM

비트코인 가치는 제롬 파웰 연방준비제도(Fed) 의장의 잭슨 홀 연설 이후 24시간 전에 5.47% 상승해 64,151달러로 상승했습니다.

Core Foundation은 CORE 토큰 및 스테이킹 활동을 지원하기 위해 Copper와 전략적 파트너십을 체결했습니다. Core Foundation은 CORE 토큰 및 스테이킹 활동을 지원하기 위해 Copper와 전략적 파트너십을 체결했습니다. Aug 09, 2024 am 03:21 AM

영국 케이맨 제도/런던 조지타운, 2024년 8월 8일 (GLOBE NEWSWIRE) -- Core Foundation은 최초의 비관리형 BTC 구현을 시작으로 EMV 호환 BTCfi를 잠금 해제하는 비트코인 ​​기반 블록체인인 Core에 기여하고 있습니다. 스테이킹

See all articles