>백엔드 개발 >PHP 튜토리얼 >ThinkPHP 대규모 쇼핑몰 프로젝트 개발 실무 영상 소스코드 코스웨어 공유

ThinkPHP 대규모 쇼핑몰 프로젝트 개발 실무 영상 소스코드 코스웨어 공유

黄舟
黄舟원래의
2017-12-04 11:07:182529검색

ThinkPHP는 엔터프라이즈 애플리케이션 개발과 민첩한 웹 애플리케이션 개발을 단순화하기 위해 탄생한 오픈 소스 PHP 프레임워크입니다. 2006년 초에 처음 탄생했으며 이전에는 FCS로 알려졌습니다. 2007년 설날에 공식적으로 ThinkPHP로 이름이 바뀌었고 Apache2 오픈 소스 계약에 따라 출시되었습니다. 초기 이념적 아키텍처는 Struts에서 유래되었습니다. 이후 지속적인 개선과 개선을 거쳐 객체 지향 개발 구조와 MVC 모델을 사용하고 Struts의 Action 및 DAO 아이디어와 JSP의 TagLib(Tag 라이브러리)을 통합하여 많은 우수한 외국 프레임워크 및 모델로부터 배웠습니다. ), CURD 및 일부 일반적인 작업, 단일 입력 모드 등을 캡슐화하는 RoR의 ORM 매핑 및 ActiveRecord 모드는 템플릿 엔진, 캐싱 메커니즘, 인증 메커니즘 및 확장성에서 고유한 성능을 제공합니다

ThinkPHP 대규모 쇼핑몰 프로젝트 개발 실무 영상 소스코드 코스웨어 공유

강좌 재생 주소: http://www.php.cn/course/350.html

선생님의 강의 스타일:

강의는 친절하고 자연스러우며, 가식 없고, 가식적이거나 고의적으로 과장되지 않고, 유창하고 세심하게 이야기해주시는 선생님들 학생들은 평등, 협력, 조화의 분위기 속에서 침묵의 감정 교환을 하며, 지식에 대한 갈증과 탐구를 단순하고 실제적인 교육 상황에 통합합니다. 학생들은 조용한 사고와 침묵의 승인을 통해 지식을 얻습니다

이 점에서 더 어려운 점은 다음과 같습니다. 영상은 ThinkPHP-RBAC에 대한 소개입니다:

RBAC는 Role-Based Access Control의 약어로 중국어로 역할 기반으로 번역하면 직설적으로 말하면 사용자가 권한과 연결되어 있음을 의미합니다. 역할을 통해 [그 아키텍처는 운영 체제의 GBAC(GROUP 기반 액세스 제어) 권한 관리 제어에서 영감을 얻었습니다]. 간단히 말해서 사용자는 여러 역할을 가질 수 있으며 각 역할에는 여러 권한이 있습니다. 이러한 방식으로 "사용자 역할 권한" 권한 부여 모델이 구성됩니다. 이 모델에서는 일반적으로 사용자와 역할, 역할과 권한 사이에 다대다 관계가 있습니다.

많은 실제 응용 프로그램에서 시스템은 사용자에게 간단한 등록을 완료해야 할 뿐만 아니라 다양한 리소스에 액세스하려면 다양한 수준의 사용자에 대해 서로 다른 운영 권한이 필요합니다. 그리고 기업 개발에서 권한 관리 시스템은 반복적인 개발을 위한 가장 효율적인 모듈 중 하나가 되었습니다. 여러 시스템에서 해당 권한 관리는 자체 시스템의 관리 요구 사항만 충족할 수 있습니다. 이는 데이터베이스 설계, 권한 액세스 및 권한 관리 메커니즘 측면에서 다를 수 있습니다. 이러한 불일치는 또한 다음과 같은 결과를 가져옵니다. 바퀴를 재발명하면 최첨단에 시간이 낭비됩니다

사용자 관리, 조직 메커니즘 및 기타 데이터가 반복적으로 유지되고 데이터의 무결성과 일관성을 보장하기 어렵습니다

권한 시스템 설계가 다르고 개념적 이해가 다릅니다. , 및 이에 상응하는 기술적 차이로 인해 시스템 간 통합에 문제가 있고, Single Sign-On이 어렵고, 복잡한 기업 시스템으로 인해 어려움이 발생합니다. RBAC는 지속적인 실행을 기반으로 하는 비교적 성숙한 액세스 제어 솔루션입니다. 실제로 RBAC 모델을 기반으로 한 권한 관리 시스템을 사용하면 다음과 같은 이점이 있는 것으로 나타났습니다. 역할과 권한 간의 변경은 역할과 사용자 관계 간의 변경보다 상대적으로 느리기 때문에 권한 관리의 복잡성이 줄어들고 관리 오버헤드가 줄어듭니다. 그리고 애플리케이션 시스템의 보안 정책을 유연하게 지원할 수 있으며 애플리케이션 시스템의 변화에 ​​대한 확장성이 뛰어납니다. 운영 측면에서 권한 분배는 직관적이고 이해하기 쉽고 계층적 권한은 계층적 사용자에게 적합합니다. 레벨 형태; 강한 섹스를 재사용합니다.

ThinkPHP의 RBAC 구현 시스템

ThinkPHP의 RBAC는 Java 기반 Spring의 Acegi 보안 시스템을 참조 프로토타입으로 사용하고 있으며, 현재 ThinkPHP 구조에 맞게 단순화되었으며 다계층의 사용자 정의 가능한 보안 시스템을 제공합니다. 애플리케이션 개발을 제어합니다. 보안 시스템은 주로 다음과 같은 부분으로 구성됩니다.

Security Interceptor

Authentication Manager

Decision Access Manager

Running Identity Manager

Security Interceptor

Security Interceptor는 문과 같은 역할을 하며, 시스템 보안에는 여러 가지가 있을 수 있습니다. 보호 시스템의 다른 보안 제어 링크 특정 링크에서 보안 시스템 인증을 통과하지 못하면 보안 인터셉터가 이를 차단합니다.

인증 관리자

보호 시스템의 첫 번째 문은 인증 관리자입니다. 일반적으로 인증 관리자는 귀하의 주체(보통 사용자 이름)와 자격 증명(보통 비밀번호)을 확인합니다. 자세한 정보를 확인하세요. 간단히 말하면, 인증 관리자는 귀하의 신원이 보안 보호 시스템의 인증 범위 내에 있는지 확인합니다.

의사결정관리 보러가기

인증관리자의 신원 확인을 통과했다고 해서 의사결정 관리 문에 접근해야 하기 때문에 시스템에서 원하는 대로 할 수 있는 것은 아닙니다. 액세스 결정 관리자는 사용자에게 권한을 부여하고 신원 인증 정보 및 보호되는 리소스와 관련된 보안 속성을 고려하여 시스템의 특정 모듈에 들어가 특정 작업을 수행할 수 있는지 여부를 결정합니다. 예를 들어, 보안 규칙에 감독자만 특정 모듈에 액세스할 수 있다고 명시되어 있고 귀하에게 감독자 권한이 부여되지 않은 경우 보안 인터셉터가 귀하의 액세스 작업을 가로챌 것입니다.
의사결정 접근 관리자는 단독으로 실행될 수 없으며 먼저 신원 확인을 위해 인증 관리자에 의존해야 합니다. 따라서 접근 결정 필터를 로드할 때 인증 관리자와 의사결정 접근 관리자가 이미 포함되어 있습니다.
애플리케이션의 다양한 요구 사항을 충족하기 위해 ThinkPHP는 액세스 결정 관리를 수행할 때 로그인 모드와 인스턴트 모드라는 두 가지 모드를 채택합니다. 로그인 모드에서는 사용자가 로그인할 때 시스템이 사용자의 인증 정보를 읽어 Session으로 변경하며, 다음 번에는 인증 정보를 다시 가져오지 않습니다. 즉, 관리자가 사용자의 권한을 수정하더라도 변경 사항은 사용자가 다음에 로그인한 후에만 적용됩니다. 즉시 모드는 위의 문제를 해결하기 위한 것입니다. 시스템의 모듈이나 작업에 접근할 때마다 사용자가 해당 모듈과 작업에 대한 권한을 가지고 있는지 즉시 확인하여 시스템의 보안을 더 높은 수준으로 보장합니다.

Identity Manager 실행

Identity Manager 실행의 유용성은 대부분의 응용 프로그램 시스템에서 제한됩니다. 예를 들어 특정 작업 및 모듈에는 여러 ID의 보안 요구 사항이 필요하므로 현재 ID를 다른 ID로 바꿀 수 있습니다. 애플리케이션 시스템 내에서 더 깊은 보호 개체에 액세스합니다. 이 보안 시스템 계층은 현재 RBAC에서 구현되지 않습니다.

ThinkPHP의 RBAC 인증 프로세스

위의 보안 시스템에 대응하여 ThinkPHP의 RBAC 인증 프로세스는 대략 다음과 같습니다.

현재 모듈의 현재 작동에 인증이 필요한지 여부를 확인

인증이 필요하지만 인증이 필요하지 않은 경우 로그인한 경우 인증 게이트웨이로 이동합니다. 5

위임 인증을 통한 사용자 신원 인증

사용자 의사결정 접근 목록 가져오기

현재 사용자에게 접근 권한이 있는지 판단

구체적인 구현 프로세스 권한 관리

RBAC 관련 데이터베이스 소개

ThinkPHP 패키지에 완료되었으며, Extend/Library/ORG/Util에 있는 RBAC 처리 클래스 RBAC.class.php 파일이 포함되어 있습니다. RBAC 사용에 필요한 4개의 테이블이 포함된 파일을 엽니다. SQL 문은 다음과 같습니다(복사 후 테이블 접두사를 교체하세요).

CREATE TABLE IF NOT EXISTS `ly_access` (
  `role_id` smallint(6) unsigned NOT NULL,
  `node_id` smallint(6) unsigned NOT NULL,
  `level` tinyint(1) NOT NULL,
  `module` varchar(50) DEFAULT NULL,
  KEY `groupId` (`role_id`),
  KEY `nodeId` (`node_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
CREATE TABLE IF NOT EXISTS `ly_node` (
  `id` smallint(6) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  `title` varchar(50) DEFAULT NULL,
  `status` tinyint(1) DEFAULT '0',
  `remark` varchar(255) DEFAULT NULL,
  `sort` smallint(6) unsigned DEFAULT NULL,
  `pid` smallint(6) unsigned NOT NULL,
  `level` tinyint(1) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  KEY `level` (`level`),
  KEY `pid` (`pid`),
  KEY `status` (`status`),
  KEY `name` (`name`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
CREATE TABLE IF NOT EXISTS `ly_role` (
  `id` smallint(6) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  `pid` smallint(6) DEFAULT NULL,
  `status` tinyint(1) unsigned DEFAULT NULL,
  `remark` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `pid` (`pid`),
  KEY `status` (`status`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ;
 
CREATE TABLE IF NOT EXISTS `ly_role_user` (
  `role_id` mediumint(9) unsigned DEFAULT NULL,
  `user_id` char(32) DEFAULT NULL,
  KEY `group_id` (`role_id`),
  KEY `user_id` (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


여기서 소스 코드 리소스를 다운로드하는 것도 좋습니다. http:// /www.php.cn/xiazai/learn/2134

materials

documents

소스 코드

삽화

템플릿

위 내용은 ThinkPHP 대규모 쇼핑몰 프로젝트 개발 실무 영상 소스코드 코스웨어 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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