2015-01-23 2 views
1

메소드 (예 : UserController @ getRead)를 사용하여 모두 또는 특정 사용자 세부 정보를 읽습니다. 내가 어떤 다른 방법 내에서 내가 사용하여 사용자에 대한 정보를 얻을 수 있도록 경로 Route::controller('user', 'UserController');이 있습니다Laravel 4에서 직접 액세스되는 메소드 중지

$request = Request::create('user/read/'.$userId, 'GET'); 
$user = json_decode(Route::dispatch($request)->getContent()); 

그것은 또한 내가 찾아 수 있음을 의미하지만 사용자 1에있는 모든 정보를 '사용자// 1 읽기' 이것은 분명 보안 허점이며 막히게됩니다. 어떻게 응용 프로그램 내에서 UserController의 read 메서드에 액세스 할 수 있지만 user/read로 직접 브라우징하지는 않습니까?

+0

이렇게하면 AJAX 요청이 생성됩니까? –

+0

아니요, Request :: ajax()'는 Request를 통해 내부적으로 액세스하든 브라우저를 통해 직접 액세스하든 false를 반환합니다. – Styphon

+0

'Request :: isJson()'또는'Request :: wantsJson()'은 어떨까요? 기본적으로, 필터를 만들어이 경로에 적용하여'Request :: something()'매개 변수 중 하나를 확인하고, 참이면 ... –

답변

1

Request::path()을 사용하여 브라우저에 입력 된 경로를 가져온 다음 user/read인지 테스트 할 수 있습니다. 중단 된 경우, 계속 진행하십시오. 특정 인스턴스에 대한 코드입니다.

if (stripos(Request::path(), 'user/read') !== false) 
{ 
    App::abort(403, 'No direct access allowed'); 
} 
+0

좋았어, 다행이야. :) –

관련 문제