반응형
Node.js + Express.js 사용자 권한 보안 모델
두 가지 유형의 사용자가있는 애플리케이션이 있습니다. 사용자가 로그인하는 방법에 따라 애플리케이션의 다른 부분에 액세스 할 수 있기를 원합니다.
사용자가 액세스 할 수없는 것을 보지 못하도록 보안 모델을 어떻게 구현합니까?
각 경로 구현의 보안 부분을 만드나요? 문제는 요청에 대해 중복 논리가 있다는 것입니다. 이것을 도우미 함수로 옮길 수는 있지만 호출하는 것을 기억해야합니다.
글로벌 app.all () 라우트 핸들러의 보안 부분을 만드나요? 문제는 각 경로를 검사하고 여러 규칙에 따라 다른 논리를 수행해야한다는 것입니다. 최소한 모든 코드가 한 곳에 있지만 모든 코드가 한 곳에 있습니다.
경로별로 사용하는 것이 일반적으로 저에게 효과적입니다. 이것은 내가 일반적으로하는 일입니다.
function requireRole (role) {
return function (req, res, next) {
if (req.session.user && req.session.user.role === role) {
next();
} else {
res.send(403);
}
}
}
app.get("/foo", foo.index);
app.get("/foo/:id", requireRole("user"), foo.show);
app.post("/foo", requireRole("admin"), foo.create);
// All bars are protected
app.all("/foo/bar", requireRole("admin"));
// All paths starting with "/foo/bar/" are protected
app.all("/foo/bar/*", requireRole("user"));
canCan for Rails https://github.com/scottkf/ability-js 와 매우 유사한 everyauth와 함께 ability-js를 사용할 수 있습니다.
NodeJS ACL / 권한 시스템에 대한 이 목록 을 살펴보십시오 . IMHO OptimalBits node_acl 이 가장 잘 보입니다.
이제 이에 대한 노드 모듈 권한 이 있습니다. 사용하기 쉽고 수락 된 답변과 매우 유사하지만 여전히 일부 기능이 추가됩니다.
참고 URL : https://stackoverflow.com/questions/9609325/node-js-express-js-user-permission-security-model
반응형
'program tip' 카테고리의 다른 글
Entity Framework Code First Fluent API로 테이블 이름을 지정하는 방법 (0) | 2020.10.13 |
---|---|
파이썬에서 팬더를 사용하여 모든 중복 항목 목록을 얻으려면 어떻게해야합니까? (0) | 2020.10.13 |
MySQL에서 재귀 SELECT 쿼리를 수행하는 방법은 무엇입니까? (0) | 2020.10.12 |
C에서 main ()없이 프로그램 컴파일 및 실행 (0) | 2020.10.12 |
Android Canvas.drawText (0) | 2020.10.12 |