2014-03-24 27 views
0

我正在使用Django中的多數據庫設置。一個是用於業務的東西(--database = default),另一個用於存儲用戶信息(--database = users)。下面是應用程序認爲將使用「用戶」數據庫:在Django中使用多個數據庫 - 針對錯誤數據庫的身份驗證

def auth_and_login(request): 
    global user 
    post = request.POST 
    if post['email'] is u'' or post['password'] is u'': 
     s = 'Please check login input forms' 
     return render_to_response('insecure.html', {'s': s}) 
    else: 
     user = authenticate(username=post['email'], password=post['password']) 
     if user is not None: 
      login(request, user) 
      s = 'Logged in ' + user.first_name + ' ' + user.last_name 
      return render_to_response('loggedin.html', {'s': s}) 
     else: 
      s = 'Login fails' 
      return render_to_response('insecure.html', {'s': s}) 

def create_user(username, email, password): 
    global user 
    user = User(username=username, email=email).using('users') 
    user.set_password(password) 
    user.save() 
    return user 

def user_exists(username): 
    user_count = User.objects.using('users').filter(username=username).count() 
    if user_count == 0: 
     return False 
    return True 

def sign_up_in(request): 
    global user 
    post = request.POST 
    if post['email'] is u'' or post['password'] is u'': 
     s = 'Please check sign-up input forms' 
     return render_to_response('upsecure.html', {'s': s}) 
    else: 
     if not user_exists(post['email']): 
      user = create_user(username=post['email'], email=post['email'], password=post['password']) 
     user.first_name=post['first'] 
     user.last_name=post['last'] 
     user.save() 
     s = 'Sign Up Successful ' + user.first_name + ' ' + user.last_name 
    else: 
     s = 'Existing User' 
    return render_to_response('upsecure.html', {'s': s}) 

當用戶註冊時,信息被存儲在正確的數據庫。但是,由於身份驗證是針對其他數據庫的,因此無法使用該信息登錄。我應該怎麼做才能將認證路由到正確的數據庫?

+0

寫自己的AUTHENTICATION_BACKEND和適當的設置中的其他註冊模型在settings.py改變文件 – Crazyshezy

回答

0

如果您已經設置了在auth的權威性路由器調用,您可以指定該數據庫的身份驗證路由器

if model._meta.app_label == 'signup/whatever': 
    return 'name_of_auth_db' 
相關問題