비슷한 프로젝트가 있는데 비슷한 작업을 수행하는 방법에 대한 세부 정보를 제공 할 수 있습니다. 귀하의 전체 솔루션이 .Net 기반이라고 가정합니다.
POCO (일반 오래된 CLR 개체)는 비즈니스 논리가없는 개체입니다. 따라서 암호 유효성 검사는 해당 클래스에서 직접 수행하지 말고 비즈니스 계층에 적용해야합니다. 예를 들어, UI는 컨트롤러 조치를 호출하여 비즈니스 계층 (BL)에 데이터를 제출하고, BL은 현재 저장된/암호화 된 암호를 얻기 위해 저장소를 호출하여 BL 사용자 암호 유효성 검사를 수행하고, BL은 암호를 비교하여 결과를 UI에 적용하거나 다른 조치를 취하십시오. 물론 모든 데이터는 SQL injection이나 Cross Site Scripting 공격을 막기 위해 유효성을 검사해야합니다.
POCO에는 Uid/Pwd 속성이있을 수 있습니다. 응용 프로그램 계층간에이 POCO 객체를 전달해야합니다. 따라서 MVC UI는 사용자 개체에 바인딩되며 컨트롤러가 전송되면 BL에서 일부 메서드를 호출하고 해당 사용자 개체에서 비즈니스 규칙 (암호가 유효 함)을 수행합니다. 이들을 실제 레이어간에 전달하려면 주 DAL에서 POCO를 추출하여 별도의 어셈블리에 배치해야합니다. 이러한 개체는 일반적으로 도메인 개체라고하며 해당 방법론에 대한 자세한 정보를 얻으려면 Google 도메인 기반 개발을 수행 할 수 있습니다.
보안은 응용 프로그램 내에서 여러 가지 방법으로 구현 될 수 있습니다. 보안은 모두 다루고 자하는 항목의 깊이에 따라 다릅니다. MVC에서 가장 기본적인 것은 컨트롤러 클래스 (Google : 컨트롤러 작업 보안)에서 Authorize 속성을 사용하는 것입니다.사용자가 인증되면 그들은 응용 프로그램 역할의 몇 가지 유형을 할당 할 수 있으며 사용자가 다음과 같은 형식으로 사용하여 이러한 역할 중 하나가 있는지 확인할 수 있습니다 : 나는 당신의 POCO를 전달하는 데 반드시 필요한 것은 아니라고 생각
[Authorize(Roles = "ModifyUserRoles")]
public ActionResult About()
{
}
출처
2010-08-23 12:19:19
Jay
팁을 주셔서 감사합니다, 그들은 유용했다 :)하지만 액세스 제어에 관해서는, 내 UI가 그것에 대한 책임을 지길 바라지 않는다. UI를 변경하면 액세스 제어 기능을 잃을 수 있습니다. 그 이유는 그것이 다른 곳에 있기를 원하기 때문입니다. 내 정보는 앞으로 웹 사이트 (asp.net mvc) 및 REST 서비스를 통해 액세스 할 수 있습니다. – codegarten
앞으로 여러 인터페이스를 사용할 예정이라면 UI와 BL 사이에 "서비스"레이어를 추가 할 것을 강력히 권장합니다. 앞으로 여러 UI를 전환하거나 추가하는 데 도움이 될 것입니다. 이 경우 WCF 서비스 계층으로이 인증 로직을 이동할 수 있습니다. 이것에 관해 많은 기사들이 있습니다. 희망이 도움이 :) – Jay