Django 의 내장 authentication 모듈을 사용하지 않는 경우, 직접 제작을 해야 하는데, login_required 라는 데코레이터가 없어서, 매번 View 에서 접근 로직을 작성해주어야 해서 번거로웠다. 아래와 같이 별도의 데코레이터를 작성해두면 로직이 바뀌더라도 하나만 변경하면 되니까 코드 관리가 좀 더 편할 것이다.

def login_required(function=None):
  def _dec(view_func):
    def _view(request, *args, **kwargs):
    # 아래 로직을 적당히 자신의 사이트에 맞게 고쳐서 쓰면 될 것이다.
      if "login_yn" not in request.session:
        return HttpResponseRedirect('/')
      else:
        return view_func(request, *args, **kwargs)
    _view.__name__ = view_func.__name__
    _view.__dict__ = view_func.__dict__
    _view.__doc__ = view_func.__doc__
    return _view
  if function is None:
    return _dec
  else:
    return _dec(function)

+ Recent posts