난 내 users
에 대한 데이터베이스 항목을 기반으로 사용자 권한을 부여하고 사용자 역할을 제공하고 있습니다.Laravel 4.2 사용자 역할 보안
저는 두 가지 역할을했습니다. 단지 일반적이고, 등록 된 사용자 인 user
역할과 저자 인 분명히 author
역할입니다.
내 사용자 테이블 이전에서는 $table->string('role')->default('user');
을 기본 사용자 역할로 사용하고 있습니다. 그런 다음 사용자가 작성자 여야한다면 어딘가에 양식을 결정할 수 있습니다. 내 User.php
에서
, 나는 내 사용자 테이블의 역할 데이터베이스 항목을 호출 그래서 같은 public function
을 설정 :
@if($user->isAuthor())
<p>Only the author can this!</p>
@endif
: 지금, 내 템플릿에 호출과 같이 할 수
public function isAuthor()
{
if (Auth::guest()) return false;
return Auth::user()->role = $this->role == 'author';
}
이것은 내가 기대하는 컨트롤을 제공하지만 '쉽지 않다'라는 사실을 전적으로 팔리지는 않습니다. 나는 그렇다, 나는 사용자와 관계를 만들고 두 모델 간의 관계를 묶을 수 있다는 것을 이해한다. 그러나 나는이 것을 아주 깔끔하게 발견했다. 이것에 대한 유일한 걱정은 보안입니다.
이것은 장시간 연습으로는 좋지 않을 수도 있지만 Laravel을 처음 접했을 때 내가 한 방식과 다른 방법을 사용하는 것과 관련된 보안상의 의의가 궁금합니다.
SO/Laravel Docs에 대한 다른 방법이 있고 사용자 역할이 많은 토론의 주제 였음을 완전히 이해하고 있지만 구현 방법 (본인을 염려스럽게 여기는)을 본 적이 없습니다. 나는 현재 사용자가 위의 메소드를 사용하여 로그인했는지 확인할 수 있었고 일치하는 문자열에 대해 DB를 쿼리하면 동일하게 작동 할 것이라고 생각했습니다.
내 질문은 현실 세계에서 사용하기에 충분합니까?
Nailed it. 환상적인 대답! 나는 모두 재사용/확장성에 대한 것이므로 오히려 많은 관계가있는 사용자/역할에 제한되지 않기 때문에보다 나은 접근 방법을 배우게됩니다. 나는 Laravel이 이것을 아름다움처럼 다루는 것으로 보아 한발 물러서서 관계 모델링을 배울 것입니다. 이제는 훨씬 더 선명하게 흑백으로 보았습니다. 건배! –
대단히 환영합니다. 막히면 많은 기사가 온라인에 있습니다. Laracasts (프리미엄)와 scotch io를 확인하십시오. – Everon