2014-07-07 102 views
1

我創建了一個非常基本的登錄應用程序。 LOGIN_URL,LOGIN_REDIRECT_URL和LOGOUT_URL工作得很好。Django:不允許用戶在未登錄時看到頁面

事情是,如果我登錄成功,然後我關閉窗口(瀏覽器),然後我重新打開瀏覽器,我可以完全搜索網址(我只是看看我是否登錄)再次使用沒有登錄的applcation。這不是它結束的地方:如果我同時打開2個單獨的瀏覽器:Chrome和Firefox,並且我只在ONE中登錄,則可以使用來自其他瀏覽器的應用程序,而不會出現任何問題。 我不想讓這種情況發生。我試圖在urls.conf中使用login_required作爲索引視圖(如果您已經登錄,您只能看到該頁面),並在類視圖中嘗試使用stronhold和django-braces。還有其他方法可以做到這一點嗎?如果你想看到任何代碼讓我知道。我使用登錄並註銷django implements(auth)。 比你

在視圖中的哪個登錄

回答

0

重定向你可以添加:

def after_login(request,..): 
    if not request.user.is_authenticated(): 
     redirect('some-non-existence-page-or-404',...) 
    #Your code 
    return 
1

它會像你需要用Django的login_required裝飾的「私人」訪問量:

from django.contrib.auth.decorators import login_required 

@login_required 
def my_view(request): 
    ... 

如果用戶未登錄或認證,將重定向到LOGIN_URL

+0

我已經嘗試過,沒有成功。我已經在我的代碼中完成了這項工作,但似乎無法正常工作。任何其他想法? – NachoMiguel

+0

而我使用基於類的視圖,所以我認爲它是一個不同的sintax,但無論如何感謝。 – NachoMiguel

0

我知道這是一箇舊帖子,但也許答案將在未來幫助其他人。 如果您的工作流程是基於類的意見,你必須使用:LoginRequiredMixin

from django.contrib.auth.mixins import LoginRequiredMixin 
from django.views import generic 

class CreateGroup(LoginRequiredMixin, generic.CreateView): 
    fields = ('name', 'description') 
    model = Group 

的LoginRequired混入

當使用基於類的意見,就可以實現相同的性能與使用login_required LoginRequiredMixin。這個mixin應該在繼承列表的最左邊位置。

https://docs.djangoproject.com/en/2.0/topics/auth/default/

相關問題