GraphQL은 페이스북이 2012년에 개발하여 2015년에 공개적으로 발표된 데이터 질의어이다. 그래프QL은 REST 및 부속 웹서비스 아키텍쳐를 대체할 수 있다. 클라이언트는 필요한 데이터의 구조를 지정할 수 있으며, 서버는 정확히 동일한 구조로 데이터를 반환한다.
쉽게 풀이하면 하나의 앤드포인트에서 내가 원하는 스키마(데이터 컬럼 양)로 데이터를 가져올 수 있다. Web API로 개발하면 클라이언트에서 사용하지 않는 데이터가 포함되어 내려갈 수 있지만, GraphQL에서는 필요한 데이터만 요청하고 사용하기 때문에 서버 리소스나, 네트워크 리소스를 절약할 수 있게 되고, 무엇보다 장점이 데이터의 종류에 맞게 대응되는 컨트롤러를 만들 필요 없이 하나의 주소에서 호출하여 사용할 수 있도록 할 수 있다.
Dynamic Role-Based Authorization in ASP.NET Core 2.0
관련 자료
You already know how role-based authorization works in ASP.NET Core but what if you don't want hardcode roles in authorization attribute or create roles later and specify in which controller and action it has access without touching source code?
Introduction
You already know how role-based authorization works in ASP.NET Core.
But what if you don't want hardcode roles in authorization attribute or create roles later and specify in which controller and action it has access without touching source code?
Using the Code
Let's begin our journey. Create ASP.NET Core Web Application project and change authentication to Individual User Accounts.
우선 MVC6 프로젝트를 두가지로 나눠서 테스트를 해보도록 하겠다. .Net Core와 .Fremework로 각각의 프로젝트로 만들고 아래와 같이 NuGet에서 Glimpse를 includ prerelease를 체크하고 검색하면 아래와 같이 "v2.0.0-beta1" 버전이 검색이 되며 각각의 프로젝트에 추가를 한다.
[그림1] NuGet에서 검색된 결과 화면
[그림2] Glimpse를 추가한 프로젝트
Glimpse는 현재 버전에서는 에러가 나고 있는 걸로 봐서 "Core" 버전을 지원하지 않고 있는 것으로 파악이 되며 .Net Framework로 만들어진 MVC6 프로젝트는 정상적으로 표시가 되고 있다. 차후에는 "Core"버전도 지원이 되었으면 하는 바램이다.
[그림3] .Net Framework의 project.json 파일에 "Glimpse" 추가
.Net Core에서는 지원하지 않는 것으로 확인이 되었으니 이제 MVC6 .Net Framework를 확인해 보도록 한다.
[그림4] .Net Framework 에서 app.UseGlimpse() 에러
위와 같이 Glimpse를 추가한 상태에서 "services.AddGlimpse();" 까지 적용하고 "Configue" 메소드에서 "app.UseGlimpse()"를 입력하면 에러가 발생이 되고 있다. 가이드 대로 똑같이 진행 하였으나 에러가 발생이 되는 이유를 분석하여 보니 Glimpse beta1은 2015년 11월달에 나왔고, MVC6는 현재 2016년 7월에 update3를 통해 계속 패치가 되던중에 namespace가 변경이 된것으로 추정이 된다. 그래서 네임스페이스가 상이하여 "UseGlimpse()"를 사용할 수 없게 된것이다. 이건 다음 beta가 나오면 해결 될 것으로 보여지는 현재 버전에서는 사용할 수 없다.
지금까지 MVC6에서 Glimpse beta1에 대해서 알아 보았으나 현재 버전에서는 사용할 수 없는 것으로 확인이 되었다. 어서 빨리 다음 버전이 나와서 사용할 수 있었으면 하는 바램이다.
ASP.NET 5와 MVC 6 에서는 .Net Core를 이용하여 통합하였다. 이전까지는 필터나 어트리뷰트를 각자 만들어서 사용하는 불편함이 있었지만 이번 통합으로 인해 한번의 개발로 같이 사용할 수 있도록 되었다. 그 밑바탕에는 .Net Core를 사용하였으며 이로인해 IIS와는 별개로 자연스레 크로스플랫폼(Windows, Linux, OSX)에서 서비스를 할 수 있는 길이 열렸다.
NTLM.js 라이브러리의 핵심은 UserName과 Password를 Base64로 인코딩하여 헤더에 추가하여 보내는 로직이다.
ntlm.js 파일의 "Msg.prototype.toBase64=function()" 통해서 인코딩하는 로직으로 확인할 수 있으며 "setCredentials"와 "authenticate"를 통해서 사용하면 된다.
Usage
Ntlm.setCredentials('domain', 'username', 'password');
var url = 'http://myserver.com/secret.txt';
if (Ntlm.authenticate(url)) {
var request = new XMLHttpRequest();
request.open('GET', url, false);
request.send(null);
console.log(request.responseText);
// => My super secret message stored on server.
}
Setup
On the server side, the following CORS HTTP Response headers are required:
이 문서는 원본 문서를 읽고, 따라하고, 변경 또는 수정없이 인용한 부분이 있으며 주석이나 추가 설명에 대해 가감을 하였습니다. 이 문서와는 별개로 별도의 원본이 있음을 알려 드리며 원본에 대한 자세한 사항은 참조 URL에 있음을 알려 드립니다. 오역, 어색한 부분, 매끄럽지 않은 부분이 있을 경우 알려주시면 적극적으로 반영하도록 하겠습니다.
실습 준비 사항
Visual Studio 2013
ASP.NET MVC5
LocalDB 11
NHibernate를 통해 ASP.NET MVC에서 간단한 CRUD를 해보도록 하겠다. 우선 준비 사항으로 데이터 베이스가 필요하여 아래와 같이 Employee테이블을 만들었다. '코드1'에서 관련 Query가 있으니 SQL Server Management Studio에서 실행하여 테이블을 생성할 수 있도록 하였다.
NHibernate 관련 DLL을 참조 하여야 한다. 참조 방법은 PM( Tools -> NuGet Package Manager -> Package Manager Console )에서 "Install-Package NHibernate"를 입력하면 참조가 된다. ( "그림4"에서는 이미 참조가 되어 있는 관계로 처음 참조하는 화면과는 다르며 예시를 하기 위함입니다. )
[그림4] Package Manager Console
NHibernate에서 사용하는 Config 파일을 Models폴더에 추가 하자. 추가할 파일명은 "Hibernate.cfg.xml"로 한다.
Model Binding using IModelBinder and DefaultModelBinder in ASP.NET MVC
이 문서에 대하여
이 문서는 원본 문서를 읽고, 따라하고, 변경 또는 수정없이 인용한 부분이 있으며 주석이나 추가 설명에 대해 가감을 하였습니다. 이 문서와는 별개로 별도의 원본이 있음을 알려 드리며 원본에 대한 자세한 사항은 참조 URL에 있음을 알려 드립니다. 오역, 어색한 부분, 매끄럽지 않은 부분이 있을 경우 알려주시면 적극적으로 반영하도록 하겠습니다.
ASP.NET MVC에서 기본으로 제공되는 모델 바인더가 있어서 컨트롤러에서 클래스로 변환되어 사용할 수 있도록 해주고 있다. 일반적인 케이스에서는 잘 동작하고 있지만 모델과 HTML의 Name이 일치하지 않을경우 커스텀 모델 바인더를 통해 해결 할 수 있는 방법을 제공해 주고 있다. 'IModelBinder' 인터페이스를 상속받아 구현된 클래스를 통해 이와같은 기능을 대체할 수 있도록 한다.
새로운 버전의 ASP.NET MVC 5.2, Web API 2.2 and Web Pages 3.2가 발표가 되었다
이 문서에 대하여
이 문서는 원본 문서를 읽고, 따라하고, 변경 또는 수정없이 인용한 부분이 있으며 주석이나 추가 설명에 대해 가감을 하였습니다. 이 문서와는 별개로 별도의 원본이 있음을 알려 드리며 원본에 대한 자세한 사항은 참조 URL에 있음을 알려 드립니다. 오역, 어색한 부분, 매끄럽지 않은 부분이 있을 경우 알려주시면 적극적으로 반영하도록 하겠습니다.
"Andreas Gustafsson" 님이 만든 Knockout Generator 툴을 이용해서 C#에사 만든 클래스를 이용해서 쉽게 javascript의 클래스를 만들 수 있도록 지원해 준다. 이 툴을 설치 하려면 우선 Visual studio 에서 Tools > Extensions and Updates... 클릭해 "그림1"과 같은 화면을 띄워 "knockout"으로 검색하면 "Knockout Generator"이 보일 것이다. 이 부분 설치하고 Visual studio를 재 실행하면 활성화가 된다.
[그림1] Knockout Generator 검색 결과 화면
그런 후 솔루션 탐색기에서 특정 클래스위에서 오른쪽 클릭하면 "그림2"와 같은 메뉴를 확인할 수 있다.
[그림2] ViewModel 만드는 화면
클릭하고 All Obserable를 체크하고 "Copy to clipboard"를 눌러 메모리에 복사한다.
[그림3] javascript를 메모리에 복사하는 화면
그런 후 "그림4"와 같이 Visual studio 에서 javascript 아이템을 새로 추가한 후