<?php namespace AdminController; use ThinkController; class IndexController extends Controller { public function index(){ $this->display(); } public function login(){ $username = I('username'); $password = I('password'); $user = D('User'); $res = $user->where(array('username'=>$username))->find(); // dump($res);die; if(!$res || md5($password) != $res['password']){ $this->error('用户名或密码错误'); }else{ session('username',$res['username']); session('id',$res['id']); session('create_time',$res['create_time']); //dump(session());die; $this->redirect('/Admin/Main/index'); //跳转到后台管理 } } //清空 public function loginout(){ session(null); //dump(session()); $this->redirect('/Admin/Index/index'); } }
<?php //后台页面的控制器 namespace AdminController; use ThinkController; class MainController extends Controller { public function index(){ $this->display(); } }
어떻게 판단해야 하나요? 주소창에 주소를 입력하면 로그인 페이지나 백엔드 시스템에 마음대로 들어갈 수 없습니다.
<?php namespace AdminController; use ThinkController; class IndexController extends Controller { public function index(){ $this->display(); } public function login(){ $username = I('username'); $password = I('password'); $user = D('User'); $res = $user->where(array('username'=>$username))->find(); // dump($res);die; if(!$res || md5($password) != $res['password']){ $this->error('用户名或密码错误'); }else{ session('username',$res['username']); session('id',$res['id']); session('create_time',$res['create_time']); //dump(session());die; $this->redirect('/Admin/Main/index'); //跳转到后台管理 } } //清空 public function loginout(){ session(null); //dump(session()); $this->redirect('/Admin/Index/index'); } } <?php //后台页面的控制器 namespace AdminController; use ThinkController; class MainController extends Controller { public function index(){ $this->display(); } }
어떻게 판단해야 할까요? 주소창에 주소를 입력하면 로그인 페이지나 백그라운드 시스템에 마음대로 들어갈 수 없습니다.
Index 컨트롤러의 __initialize 메소드에서 세션이 종료되었는지 확인합니다. 값을 할당했습니다. 로그인으로 점프가 없습니다.
구체적인 참고사항
TP 프레임워크 __initialize 방식
다른 사람이 백그라운드로 들어가는 것을 원하지 않는 것, 즉 로그인 페이지는 들어갈 수 없는 것 같죠? 접근 가능한 모듈을 구성해 볼 수 있다면 로그인 여부를 판단하려면 세션을 판단해야 합니다
몇 가지 정보를 제공하고 작동하면 배포해 보겠습니다. 서버 설정에 넣고 로컬로 설정하지 마세요.
모듈 접근이 금지되어 있습니다
3.2对模块的访问是自动判断的,所以通常情况下无需配置模块列表即可访问,但可以配置禁止访问的模块列表(用于被其他模块调用或者不开放访问),默认配置中是禁止访问Common模块和Runtime模块(Runtime目录是默认的运行时目录),我们可以增加其他的禁止访问模块列表: // 设置禁止访问的模块列表 'MODULE_DENY_LIST' => array('Common','Runtime','Api'), 设置后,Api模块不能通过URL直接访问,事实上,可能我们只是在该模块下面放置一些公共的接口文件,因此都是内部调用即可。 设置访问列表 如果你的应用下面模块比较少,还可以设置允许访问列表和默认模块,这样可以简化默认模块的URL访问。 ***'MODULE_ALLOW_LIST' => array('Home','Admin','User'),*** 'DEFAULT_MODULE' => 'Home', 设置之后,除了Home、Admin和User模块之外的模块都不能被直接访问,并且Home模块是默认访问模块(可以不出现在URL地址)。
로그인 페이지에 들어갈 수 없는데, 백엔드 시스템에 어떻게 로그인하나요?
사실 검증이 있는지 판단하는 문제입니다.
TP는 기본 클래스(BaseController
)를 작성할 수 있으며, 검증이 필요한 모든 컨트롤러는 이 기본 클래스를 상속해야 합니다.
isAuth()) { $this->redirectToLogin(); } } private function isAuth() { //验证是否登录 } private function redirectToLogin() { //跳转到登录页面 } }
예를 들어 백그라운드에 관리자 컨트롤러가 있는 경우
class AdminController extends BaseController { public function __construct() { parent::__construct(); } }
TP가 하는 일인데 Symfony 같은 프레임워크에는 자체 검증 클래스가 있어서 http를 쉽게 수행할 수 있습니다. 인증, 액세스 토큰 인증 및 사용자 정의 인증 방법
로그인 페이지에 대한 액세스를 허용하지 않는 것은 불가능합니다. 그렇지 않으면 비즈니스 직원 중 누구도 로그인할 수 없습니다. 프런트엔드와 백엔드가 동일한 사용자 시스템인 경우 프런트엔드 로그인 사용자에게 백엔드에 들어갈 수 있는 권한이 있는지 확인하십시오. 로그인하지 않고 로그인 페이지를 정상적으로 표시하면 됩니다. 검색 엔진이 백엔드 로그인 주소를 가져오지 못하게 하세요
로그인되었는지 확인하는 공개 함수를 작성하세요
function isLogin(){ if(I('session.uid')){ return true; }else{ return false; } }
그런 다음 __initialize 메소드에
if(!isLogin()){ $this->redirect('/login') //重定向到登录页 }