2017-05-16 8 views
0

これは本質的に私の問題です.Dajngoを組み込んだシステムでユーザーを認証した後、代わりにユーザー "admin"に切り替えます以前のユーザーをセッション中に維持すること。コード:django認証:フォローアップビューを実行するときにユーザーが "admin"ユーザーになる

from django.contrib.auth import authenticate 
from django.contrib.auth.decorators import login_required 
def new_login_view(request): 

    if request.method == 'POST': 
     data = dict(request.POST) 
     data.pop('csrfmiddlewaretoken') 

     id_client = data['lg_username'][0] 
     pass_client = data['lg_password'][0] 

     user = authenticate(username=id_client, password=pass_client) 

     if user is not None: 
      # A backend authenticated the credentials 
      ... 
      return render(request, 'initial_page.html', dictionary_with_info) 

私はinitial_page.htmlで午前ビューをアクティブにしたとき、それは次のとおりです。私はrequest.userために呼び出すとき

@login_required 
def home(request): 
    if request.method == 'POST': 
     ... 

は私が取得:代わりに、前にユーザーのUser: admin

なぜですか?

答えて

2

あなたはそのユーザーを認証しています。あなたは、実際にユーザーをログインしlogin()呼び出されていない。

from django.contrib.auth import authenticate, login 

def new_login_view(request): 

    if request.method == 'POST': 
     ... 
     user = authenticate(username=id_client, password=pass_client) 
     if user is not None: 
      login(request, user) 
      # Redirect to a success page. 

は、詳細はhow to log a user in上のドキュメントを参照してください。

Djangoにはauthentication viewsが組み込まれています。自分で作成するのではなく、提供されたログインビューを使用することをお勧めします。

+0

あなたはそうです! – Asher11

関連する問題