def login(request): # 不接受POST请求 if request.method != 'GET': raise Http404() account = AccountFactory.getAccountObj() return account.login(request)
def authenticate(self, ticket=None, request=None): account = AccountFactory.getAccountObj() status, user = account.check_backend_login_status(request) if not status or not user: return None return user
def process_response(self, request, response): """ 统一处理response请求 """ account = AccountFactory.getAccountObj() # 统一处理 response, 包括 cookie、session 等 response = account.handel_response(request, response) return response
def get_login_state(request): """ 获取登录态 """ account = AccountFactory.getAccountObj() # 重定向到首页 response = HttpResponseRedirect(SITE_URL) # 处理登录的cookie response = account.handel_response(request, response) return response
def http_referer(request): """ 获取 HTTP_REFERER 头 """ if 'HTTP_REFERER' in request.META: http_referer = urlparse.urlparse(request.META['HTTP_REFERER'])[2] else: from account.factories import AccountFactory account = AccountFactory.getAccountObj() http_referer = account._config.LOGIN_REDIRECT_URL return http_referer
def process_view(self, request, view, args, kwargs): """ 校验登录, 如果未登录由跳转登录页 """ # 判断豁免权 if getattr(view, 'login_exempt', False): return None # 判断用户登录状态是否OK account = AccountFactory.getAccountObj() loginStatus = account.check_user_login_status(request) if loginStatus == 0: return None # 判断视图是不是自定义了login_url和redirect_field_name loginUrl = getattr(view, 'login_url', account.getConfig().LOGIN_URL) redirectFieldName = getattr(view, 'redirect_field_name', REDIRECT_FIELD_NAME) # 对于登录态不OK的用户, 引导重新登录 (首页的直接跳登录页, 非首页的跳登录态错误页) return account.redirectReLogin(request, loginUrl, redirectFieldName)
def login_success(request): """ 登录成功页面 """ account = AccountFactory.getAccountObj() return account.login_success(request)
def login_page(request): """ 平台统一登录页面 """ account = AccountFactory.getAccountObj() return account.login_page(request)
def check_failed(request): """ 权限验证错误页面 """ account = AccountFactory.getAccountObj() return account.check_failed(request)
def logout(request): account = AccountFactory.getAccountObj() return account.logout(request)