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에 있음을 알려 드립니다. 오역, 어색한 부분, 매끄럽지 않은 부분이 있을 경우 알려주시면 적극적으로 반영하도록 하겠습니다.
Entity Framework를 통해 DB 컨트롤을 하는 객체를 만들었을 때 Mock을 통해 쉽게 테스트를 할 수 있는 프레임웍을 소개 하고자 한다. rowanmiller가 GitHub에 올려둔 "EntityFramework.Testing"를 살펴 보면 간단한 사용 방법을 보여주고 있다. 아래 코드는 테스트 부분만 따로 떼어내서 간단한 부연 설명을 주석으로 추가 하였다.
var data =newList<Blog>
{
newBlog{ Name ="BBB" },
newBlog{ Name ="CCC" },
newBlog{ Name ="AAA" }
};
[코드1] 데이터 원본
'코드1'에서와 같은 데이터에서 Mock을 통해 DBContext를 만들기 위해서는 '코드2' 에서와 같이 해줘야 했으나 "EntityFramework.Testing"를 사용하면 "코드3"와 같은 코드로 대체할 수 있다.
var mockSet =newMock<DbSet<Blog>>();
mockSet.As<IQueryable<Blog>>().Setup(m =>m.Provider).Returns(data.Provider);
mockSet.As<IQueryable<Blog>>().Setup(m =>m.Expression).Returns(data.Expression);
mockSet.As<IQueryable<Blog>>().Setup(m =>m.ElementType).Returns(data.ElementType);
mockSet.As<IQueryable<Blog>>().Setup(m =>m.GetEnumerator()).Returns(data.GetEnumerator());
var mockContext =newMock<BloggingContext>();
mockContext.Setup(c => c.Blogs).Returns(mockSet.Object);
[코드2] 기존 초기화 코드
var set =newMockDbSet<Blog>()
.SetupSeedData(data)
.SetupLinq();
Initializing a class today can be cumbersome at times. Consider, for example, the trivial case of a custom collection type (such as Queue<T>) that internally maintains a private System.Collections.Generic.List<T> property for a list of items. When instantiating the collection, you have to initialize the queue with the list of items it is to contain. However, the reasonable options for doing so with a property require a backing field along with an initializer or an else constructor, the combination of which virtually doubles the amount of required code.
With C# 6.0, there’s a syntax shortcut: auto-property initializers. You can now assign to auto-properties directly, as shown here:
1. class Queue<T>
2. {
3. private List<T> InternalCollection { get; } =
4. new List<T>;
5. // Queue Implementation
6. // ...
7. }
그리고JSON Data를쉽게다룰수있는JObject라는타입이새로나왔습니다.
Figure 3 Leveraging the Indexed Method with JSON Data
1. using Microsoft.VisualStudio.TestTools.UnitTesting;
2. using Newtonsoft.Json.Linq;
3. // ...
4. [TestMethod]
5. public void JsonWithDollarOperatorStringIndexers()
6. {
7. // Additional data types eliminated for elucidation