2021년 목표설정

이미지
기본적으로 작년에 달성하지 못한 것들을 하려고 생각중인데..코로나가 언제까지 이어질지, 한국이나 북해도는 갈 수 있을지..자격증은 응시 가능할지..여러가지가 불확실하다. 2021년은 무엇보다 정신적인 부분과 경제적인 부분에 중점을 두고 조금 더 치열하게 지내보고 싶다. 일본나이로도 30대 마지막 해, 이제 불혹에 접어드는 나이..복잡하지만 심플하게. 육체적목표 : 트라이에슬론 스탠다드 도전하기 정신적 : 자격증2개 도전 + 자체개발 서비스 론칭 가족적 : 가정의 평화를 유지하기 경제적 : 외식과 유흥비를 줄이고 부수입을 늘려서 결과적으로 저축하기 사회적 : 목표세미나를 포함해서 민단과 개인인맥의 활성화와 교류를 촉진하기

cakephp 3 복수인증 구현하는 법

하나의 cakephp server 에 복수의 서비스를 제공하며 각 서비스에 별도의 로그인이 필요한 경우..
예를 들면 관리자 페이지와 유저 페이지가 별도로 있고 각각 관리자 로그인, 유저 로그인을 제공해야 하는 경우에 별도로 cakephp를 설치하여 제공하게 되면 용량도 낭비되고 관리도 어려움.

이틀 끙끙거리다가 나름 답을 찾았으나 50점 짜리..결국 도움을 받아서 해결하게 되었음.

1. 우선 폴더구조를 변경해야 한다. 만약에 관리자와 이용자 페이지를 별도로 분리하여 서비스를 하는 경우라면,
/src/controller 와 src/template 폴더에 각각 admins 과 users 혹은 private 와 public 등등 물리적으로 분리할 수 있는 폴더를 만든다. 이 폴더 이름이 prefix 이름으로 사용됨. 아, 이미 데이터베이스와 테이블 설정이 끝난 상태에서 2번의 bake 를 돌리면 자동으로 폴더구조가 만들어짐...
2.애초에 bake 명령을 사용할 때 prefix 를 설정하는 것을 추천. 수동으로 하는 경우 페이지가 안 뜨거나 컨트롤러를 못 찾는 등의 문제가 발생하더라...
> bake command
cake bake all [project_name] --prefix [name]
만약에 수동으로 할 경우에는 기존의 컨트롤러 파일 위에 정의되어 있는 namespace App\Controller; 를 namespace App\Controller\[prefix_name]; 으로 변경한다.

3. /config 폴더에 있는 routes.php 파일에 prefix 를 포함해서 루팅설정을 한다.
> /config/routes.php
<?php
/**
 * Routes configuration
 *

use Cake\Core\Plugin;
use Cake\Routing\RouteBuilder;
use Cake\Routing\Router;
use Cake\Routing\Route\DashedRoute;

Router::defaultRouteClass(DashedRoute::class);

Router::scope('/', function (RouteBuilder $routes) {
  
    $routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']);
    $routes->connect('/pages/*', ['controller' => 'Pages', 'action' => 'display']);

    /**
     *  一般用トップページ用(이용자용 페이지)
     */
      //  $routes->connect('/:controller', ['action' => 'index', 'prefix' => 'user'], ['routeClass' => 'DashedRoute']);
      //  $routes->connect('/:controller/:action/*', ['prefix' => 'user'], ['routeClass' => 'DashedRoute']);

    /**
     *  システム管理者トップページ用(관리자용 페이지)
     */

    $routes->connect('/admin', ['controller' => 'Contract', 'action' => 'index', 'prefix' => 'admin']);
   
     //주석처리 필수
     //$routes->fallbacks(DashedRoute::class);
});
// 이 부분을 추가
Router::prefix('admin', function ($routes) {
    $routes->fallbacks('DashedRoute');
});

Plugin::routes();


4. AppController 에 auth 설정을 해 준다.
> /src/Controller/AppController.php
class AppController extends Controller { public function initialize() { parent::initialize(); if ($this->request->prefix == 'admin') { $this->loadComponent('Auth', [ // 管理者の認証設定 ]); $this->Auth->sessionKey = 'Admin'; } else { $this->loadComponent('Auth', [ // 一般ユーザの認証設定 ]); } } }

아아..힘들었다...ㅠㅠ

댓글

이 블로그의 인기 게시물

[메모] PostgreSQL에서 Insert 하는 경우 자동채번 PK가 중복에러 나는 경우

[C# & LINQ] 랜덤으로 데이터를 한 개 추출하는 방법

[react-native] uuid 생성이 에러가 날 때 대처법