2013-05-15 193 views
0

我正在嘗試登錄用戶。創建他的個人資料後。 但是當他授權他時,他以匿名用戶身份登錄。Django以匿名用戶身份登錄?

from django.contrib.auth import authenticate as authorise 

def shopify_register(request): 

    print "############*****GOT DETAILS*****############" 
    password = request.POST['pass'] 


    subs, stat = Subscription.objects.get_or_create(validity=datetime.now()+timedelta(days=30)) 
    newuser, stat = User.objects.get_or_create(username=request.POST['email']) 
    newuser.set_password(password) 
    newuser.save() 
    user, stat = UserProfile.objects.get_or_create(subscription=subs,user=newuser) 
    domain, stat = Domain.objects.get_or_create(user_profile=user, shortname=request.POST['shop_name'], keywords=request.POST['keywords']) 

    profile,stat = ShopifyUserProfile.objects.get_or_create(shop_user =user.. etc) 
    username = request.POST['email'] 



    authuser = authorise(username=username, password=mdpass) 
    domain = Domain.objects.get(user_profile=user) 
    testimonies = Testimony.objects.filter(domain=domain).filter(show=0).order_by('-timestamp') 
    c = RequestContext(request, { 
     'user' : user, 
     'testimonies': testimonies, 
     'request': request, 
     'mentions': 1, 
     'domain': domain 
    }) 
    return render_to_response('homepage.html', context_instance=c) 

UPDATE:

authuser = authorise(username=username, password=mdpass) 

這並不授權用戶。儘管用戶已經創建。

它工作正常,但它將用戶記錄爲匿名用戶?這裏有什麼問題?

刪除了md5散列,但仍然沒有授權用戶。

更新:2

ipdb> authuser = authorise(username=username, password=password) 
ipdb> authuser 
<User: [email protected]> 
ipdb> temp=auth_login(request,authuser) 
ipdb> temp 
ipdb> print temp 
None 

這意味着它已授權用戶,但它無法登錄他

+1

我不知道你要在這裏做什麼,但是在將密碼傳遞給'set_password'之前,你絕對不應該對密碼進行哈希處理 - 該方法需要處理哈希本身。 –

+0

我正在嘗試驗證用戶。用戶類是基本Django用戶模型的派生用戶。 –

+0

我可以看到,但我的觀點依然存在。你不應該在那裏散列密碼。 –

回答

1

你需要調用登錄功能進行身份驗證後。

from django.contrib.auth import login as auth_login 
auth_login(request, user) 
1

您需要將密碼輸入authorise,不需要shs224。 authorise將照顧哈希。

from django.contrib.auth import login 

#remove md5 step 
authuser = authorise(username=username, password=password) 
login(authuser, request) 

您需要在authenticate之後致電login