【发布时间】:2013-07-11 14:15:50
【问题描述】:
如果用户身份验证失败,我正在尝试实现一个简单的页面重定向到索引页面。
想象一下我有两条路:
www.xyz.com/app/
www.xyz.com/app/user
第一个渲染索引页面,第二个是登录成功的授权用户登陆页面。
在我的views.py 文件中,我有
def index(request):
return render(request, "app/index.html")
def userLogin(request):
loginUser = authenticate(username = request.POST["username"], password = request.POST["password"])
if loginUser is not None:
if not loginUser.is_active:
loginUser.is_active = True
loginUser.save()
login(request, loginUser)
return HttpResponse(reverse(user))
else:
return HttpResponse(simplejson.dumps({"login" : "failed"}))
def userLogout(request):
logout(request)
return HttpResponseRedirect(reverse(index))
和urls.py
urlpatterns = patterns("",
url(r'^$', views.index, name = "index"),
url(r'^user/$', views.user, name = "user"),
url(r'^registerNewUser/$', views.registerNewUser),
url(r'^userLogin/$', views.userLogin),
url(r'^user/userLogout/$', views.userLogout),
)
注销功能是通过 Ajax POST 请求访问的,在日志中,我看到了
[11/Jul/2013 09:08:00] "POST /app/user/userLogout/ HTTP/1.1" 302 0
[11/Jul/2013 09:08:00] "GET /app/ HTTP/1.1" 200 5039
但索引页面未加载。但是,如果我刷新页面,则会加载索引页面,因为对 request.user.is_authenticated() 的条件调用会触发相同的 HttpResponseRedirect 调用和参数失败。
【问题讨论】:
-
您的
LOGOUT_URL设置是什么样的? -
LOGOUT_URL = "/app/"是我放入设置文件的内容。它不起作用,“/app/index.html` 也不起作用 -
这个怎么样:
(r'^user/userLogout/$', 'django.contrib.auth.views.logout', {'next_page': '/app/'})? -
如果您发出 ajax 请求注销,您不需要使用 Javascript 执行重定向吗?
-
@ChrisMcKinnel,这就是我最终做的,但我最初的希望是让 Django 服务器执行重定向而不需要任何 JS 响应处理。
标签: python django authentication