모델 유효성 검사와 비슷한 방식으로 모델 레벨 (컨트롤러 아님)에서 레일즈 애플리케이션의 권한을 구현하고 싶습니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?레일즈에서의 모델 레벨 인증
모델 자체에서 구현되는 경우 주요 문제는 모델이 현재 사용자에게 액세스 할 수 없다는 것입니다. 나는 같은 솔루션을 보았다 : Thread.current[:user_id] = session[:user_id]
,하지만 그건 좋은 생각 같지 않아.
나는 create, find 및 new와 같은 메소드의 변형이 작성되어 현재 사용자에 대한 추가 매개 변수를 허용하는 다른 접근 방식을 보아 왔습니다.
또 다른 방법은 예를 user.posts.create
또는 user.readable_posts.find
대신 Post.create
또는 Post.find
으로 사용되는, 그래서 사용자/역할 클래스의 모든 메소드를 구현하는 것입니다.
이러한 접근법 중 어느 것을 제안 할 것입니까? 승인을 구현하는 더 좋은 방법이 있습니까? 이것을 쉽게 만드는 플러그인이 있습니까? 여러 역할과 모델에 맞게 확장 할 수있는 접근 방식이 필요합니다.
이 방법을 사용하면 콘솔 (또는 컨트롤러를 통과하지 않는 다른 방법)의 요청이 어떻게 처리됩니까? – Ralf
내 의견에 대한 대답을 찾았습니다. Authorization :: Maintenance에는 이에 대한 기능이 있습니다. 언뜻보기에 declarative_authorization은 필자가 요구 한 일부 기능을 놓친 것처럼 보였지만, 더 깊게 보았을 때 나는 그것이 매우 강력하다는 것을 알았습니다. 나는 모든 권한을 별도의 파일로 지정할 수있는 것을 좋아합니다. – Ralf
그래, 그걸로 꽤 잘 작동 해. 대부분의 로직은 애플리케이션에서 제외됩니다. 그리고 사용자가 할 수있는 일을 나열하는 대신 무언가를 할 수 있는지 실제로 확인하는 방식을 좋아합니다. 청소기가 느껴집니다. –