권한 제어 기술은 현대 웹 애플리케이션 개발에서 점점 더 중요해지고 있습니다. 이는 개발자가 사용자 권한을 관리하고, 데이터 액세스를 제어하고, 시스템 보안을 보호하는 데 도움이 됩니다. ThinkPHP6은 다양한 권한 제어 기술을 제공하는 강력한 PHP 프레임워크입니다. 이 기사에서는 그 중 일부를 소개합니다.
ThinkPHP6에서 인증과 승인은 서로 다른 개념입니다. 인증이란 일반적으로 사용자의 신원을 확인하고 사용자가 합법적인지 여부를 확인하는 것을 의미합니다. 권한 부여는 사용자에게 특정 리소스에 액세스할 수 있는 권한을 부여하는 것을 의미합니다. ThinkPHP6은 인증 및 권한 부여 기능을 구현하기 위한 Auth 구성 요소를 제공합니다.
인증 구성 요소는 구성 파일에서 사용자, 역할 및 권한 간의 관계를 정의하고 Auth 클래스의 메서드를 호출하여 인증 및 권한 부여를 수행해야 합니다. 구체적인 단계는 다음과 같습니다.
(1) 관계 정의
구성 파일에서 사용자, 역할 및 권한 간의 관계를 정의합니다. 예:
'auth' => [
'auth_on' => true, // 认证开关 'auth_type' => 1, // 认证方式,1为实时认证;2为登录认证。 'auth_group' => 'auth_group', // 用户组数据表名 'auth_group_access' => 'auth_group_access', // 用户-用户组关系表 'auth_rule' => 'auth_rule', // 权限规则表 'auth_user' => 'admin_user', // 用户信息表
],
위 코드에서는 'auth_on' 스위치를 true로 설정해 인증 기능을 활성화하고, 'auth_type' 스위치를 1로 설정해 실시간 인증을 사용하도록 했습니다. 다음으로 사용자 그룹, 사용자-사용자 그룹 관계, 권한 규칙, 사용자 정보 등 4개의 테이블 이름이 정의됩니다.
(2) 사용자 인증
사용자 인증을 위해 Auth 클래스의 check 메소드를 사용하세요. 예:
use think acadeAuth;
//인증된 사용자
if (Auth::check($username, $password)) {
// 认证通过
} else {
// 认证失败
}
위 코드에서 $username $password는 사용자가 각각 입력한 사용자 이름과 비밀번호입니다. Auth::check 메소드는 인증에 성공하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
(3) 승인된 액세스
승인된 액세스에 앞서 현재 로그인된 사용자의 역할 및 권한이 세션에 저장되어 있어야 합니다. 예:
think acadeSession 사용;
think acadeRequest 사용;
think acadeAuth 사용;
// 현재 사용자 역할 및 권한 저장
$user = Auth::user();
$groups = Auth::getGroups( $user ['id']);
$rules = Auth::getRules($user['id']);
Session::set('user_groups', $groups);
Session::set('user_rules' , $ 규칙);
다음으로 컨트롤러에 있는 Auth 클래스의 check 메서드를 사용하여 사용자에게 액세스 권한이 있는지 확인합니다. 예:
think acadeSession 사용;
think acadeRequest 사용;
think acadeAuth 사용;
// 사용자 권한 결정
$user = Session::get('user');
$groups = Session::get(' user_groups ');
$rules = 세션::get('user_rules');
if (Auth::check(요청::path(), $groups, $rules)) {
// 用户有访问权限
} else {
// 用户无访问权限
}
위 코드에서 Request::path()는 현재 요청의 URL 주소를 가져옵니다. $groups 및 $rules는 각각 현재 사용자의 역할 및 권한입니다. Auth::check 메소드는 사용자에게 액세스 권한이 있는지 확인합니다. 그렇다면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
RBAC(Role-Based Access Control)는 사용자 역할과 권한을 분리하고, 사용자는 역할을 통해 권한을 얻는 역할 기반 접근 제어 기술입니다. ThinkPHP6은 역할 기반 액세스 제어를 쉽게 구현할 수 있는 RBAC 확장 모듈을 제공합니다.
(1) RBAC 확장 모듈 설치
ThinkPHP6에서 RBAC 확장 모듈을 설치하는 것은 매우 편리합니다. 명령줄에서 다음 명령만 실행하면 됩니다.
composer require jiaming/admin-rbac
( 2) 데이터베이스 테이블 생성
다음 명령을 실행하여 필요한 데이터베이스 테이블을 생성합니다:
php think migration:run --seed /vendor/jiaming/admin-rbac/database/migrations
(3) RBAC 사용
RBAC 확장 모듈을 사용하려면 역할, 권한, 리소스 및 규칙을 정의해야 합니다. ThinkPHP6에서는 RBAC 관련 구성 항목을 config/auth.php에 정의해야 합니다. 예:
'auth' => [
// ... 'auth_type' => 'rbac', 'rbac' => [ 'role_table' => 'admin_role', 'user_table' => 'admin_user', 'access_table' => 'admin_access', 'node_table' => 'admin_node', 'role_user_table' => 'admin_role_user', ],
],
위 코드에서 'auth_type'은 'rbac'로 설정됩니다. , RBAC 인증 방법 사용을 나타내며 관련 데이터 테이블 이름을 정의합니다.
다음으로 컨트롤러에서 RBAC를 초기화해야 합니다. 예:
use jiamingAdminRbacRbac;
class Index extends Controller
{
public function index() { // 初始化RBAC Rbac::init(); // ... }
}
위 코드에서는 Rbac::init 메서드를 호출하여 초기화합니다. RBAC.
마지막으로 컨트롤러에서 액세스 제어를 수행합니다. 예:
use jiamingAdminRbacRbac;
class Index extends Controller
{
public function index() { // 初始化RBAC Rbac::init(); // 判断用户权限 if (!Rbac::can('index/index/index')) { $this->error('您没有访问权限!'); } // ... }
}
위 코드에서 Rbac::can 메소드는 현재 사용자가 인덱스에 대한 액세스/인덱스/인덱스에 대한 권한입니다.
요약
권한 제어 기술은 시스템 보안과 사용자 데이터를 보호하기 위한 최신 웹 애플리케이션 개발에서 중요한 측면입니다. ThinkPHP6에서는 인증 및 권한 부여, RBAC 등 다양한 권한 제어 방법을 사용할 수 있습니다. 애플리케이션 요구 사항 및 개발 비용을 기반으로 적절한 권한 제어 방법을 선택하면 개발 효율성과 애플리케이션 보안을 향상할 수 있습니다.
위 내용은 ThinkPHP6에서 권한 제어 기술 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!