사용 권한을 관리해야하며 다른 사용자 유형이 있습니다 (예 : ).상속을 사용하여 다른 권한을 효율적으로 처리하십시오.
def not_allowed(*args, **kwargs): return False
class User(object):
def __init__(self, userid):
self.userid = userid
def __getattr__(self, attr):
return not_allowed
def view_profile(self)
return True
class Admin(User):
def edit_comment(self):
return True
class Expert(User):
def delete_post(self):
return True
user = {'userid': 'user', 'roles': ['admin', 'expert']}
는 지금은 이론적으로 단순히 역할을 할 수있는 모든 것을 할 수 있어야 다목적 유형을 가질 수 있어야합니다.
는이 같은 뭔가 시도 :
u = MultiRoleUser('userid', [Admin, Expert])
표기하지만 이상적으로 나는 모든 클래스의 메소드를 호출하고 싶습니다 작동하지 않습니다
class MultiRoleUser(User):
"""A multirole user has all the power of all the roles together
"""
def __init__(self, userid, roles):
super(MultiRoleUser, self).__init__(userid)
self.roles = roles
def __getattr__(self, attr):
all_funcs = [getattr(x, attr) for x in self.roles]
return any(x() for x in all_funcs)
전달 및 할 또는 (함께).
문제는 내가 심지어 단지, 대신 각 역할에 대해 을 사전을 사용할 수있는 내가 해당 유형의 객체를 가질 필요가 방법 .. 이론적으로
전화를하지만 false로 기본을 좋아하다 트릭, 그리고 때로는 내가 또한 권한을 계산하는 함수가 필요합니다.
제안 사항?
왜 처음부터 자신의 인증 프레임 워크를 사용하고 있습니까?이것은 해결 된 문제이며 휠을 재발 명하지 못하도록 충분히 견고하고 균일합니다. – delnan
지금은 선택의 여지가 없기 때문에 API를 병에 넣고 추가로 통합 할 것을 제안합니다. 어쨌든이 마지막 일이 끝나면 60 줄의 코드로 잘될 것입니다. –