program tip

Node.js + Express.js 사용자 권한 보안 모델

radiobox 2020. 10. 12. 07:26
반응형

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

반응형