django는 URL을 통해 간단한 권한 제어를 실현합니다
1.models.py 파일
class level(models.Model):
l_name = models.CharField(max_length=50,verbose_name=" ")
l_permission = models.OneToOneField("permission")
def __str__(self):
return self.l_name
class userinfo(models.Model):
u_name = models.CharField(max_length=50,verbose_name=" ")
u_user = models.OneToOneField(User)
u_level = models.ForeignKey(level,related_name="lev")
def __str__(self):
return self.u_name
class permission(models.Model):
p_name = models.CharField(max_length=50,verbose_name=" ")
p_menu = models.ManyToManyField("menu")
def __str__(self):
return self.p_name
class menu(models.Model):
m_name = models.CharField(max_length=50,verbose_name=" ")
m_url = models.CharField(max_length=50,verbose_name=" ",blank=True,null=True)
def __str__(self):
return self.m_name
class nickname(models.Model):
n_nickname = models.CharField(max_length=50,verbose_name=" ",blank=True,null=True)
n_user = models.ForeignKey(userinfo,blank=True,null=True,related_name="nick")
def __str__(self):
return self.n_nickname
사용자 및 역할의 관계, 액세스 가능한 라우트를 설정합니다.
2.settings.py 파일
URL_WHITE_LIST = ['index', 'login', 'logout']
루트 화이트 리스트를 설정합니다.
3.views.py 파일
def url_check(fun):
def check(request,*args,**kwargs):
if request.session.get("p_l",None):
require_list = pickle.loads(request.session.get("p_l"))
request_url = request.path.replace("/","")
ua = request.META.get('HTTP_USER_AGENT',None)
if request_url in require_list or request_url in IP_WHITE_LIST:
return fun(request,*args,**kwargs)
else:
error_msg = " !"
menu_ = pickle.loads(request.session.get("p_l"))
return render(request,"index.html",{"error_msg":error_msg,"menu":menu_})
else:
return HttpResponseRedirect(reverse("login"))
return check
사용자가 로그인했을 때의session 정보에 따라 사용자 역할이 접근할 수 있는 루트를 가져옵니다. 현재 방문한 주소가 백명단이나session 기록에 없으면 오류 정보를 되돌려줍니다.
@url_check
def menu(request,menuname):
return HttpResponse("%s"%menuname)
이후의 방법에 이 클립을 추가하면 간편한 루트 제어를 실현할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.