首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在豁免url方面有困难

在豁免url方面有困难
EN

Stack Overflow用户
提问于 2018-09-26 11:41:43
回答 1查看 198关注 0票数 0

嗨,我试图在我的项目中豁免一个url,这样用户就可以绕过中间件,重新设置他们的密码而无需登录。但是,我在LOGIN_EXEMPT_URLS中放置的urls似乎没有修复这个问题,相反,重置密码的链接将用户重定向到帐户/登录。

settings.py:

代码语言:javascript
复制
LOGIN_EXEMPT_URLS = {

r'^account/logout/$',
r'^account/register/$',
r'^account/reset-password$',
r'^account/reset-password/done/$',
r'^account/reset-password/confirm(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,23})/$',
r'^account/reset-password/complete/$',

}

middleware.py:

代码语言:javascript
复制
url_is_exempt = any(url.match(path)for url in EXEMPT_URLS)

    if path == reverse('accounts:logout').lstrip('/'):
        logout(request)

    if request.user.is_authenticated and url_is_exempt:
        return redirect(settings.LOGIN_REDIRECT_URL)

    elif request.user.is_authenticated or url_is_exempt:
        return None

    else:
        return redirect(settings.LOGIN_URL)

urls.py:

代码语言:javascript
复制
urlpatterns = [
url(r'^$', views.home),
url(r'^login/$', auth_views.LoginView.as_view(template_name='accounts/login.html'), name='login'),
url(r'^logout/$', auth_views.LogoutView.as_view(template_name='accounts/logout.html'), name='logout'),
url(r'^register/$', views.register, name='register'),
url(r'^profile/$', views.view_profile, name='view_profile'),
url(r'^profile/edit/$', views.edit_profile, name='edit_profile'),
url(r'^change-password/$', views.change_password, name='change_password'),

url(r'^reset-password/$',
    PasswordResetView.as_view(template_name='accounts/reset_password.html',
                              success_url=reverse_lazy('accounts:password_reset_done')), name='reset_password'),

url(r'^reset-password/done/$', PasswordResetDoneView.as_view(), name='password_reset_done'),
url(r'^reset-password/confirm(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,23})/$',
    PasswordResetConfirmView.as_view(), name='password_reset_confirm'),
url(r'^reset-password/complete/$', PasswordResetCompleteView.as_view(), name='password_reset_complete'),
]

main/urls.py:

代码语言:javascript
复制
urlpatterns = [
path('', views.login_redirect, name='login_redirect'),
path('admin/', admin.site.urls),
path('account/', include('accounts.urls', namespace='accounts')),


]

html:这是在{% %} (user.is.authenticated)中

代码语言:javascript
复制
<ul class="navbar-nav ml-auto">
        <li class='nav-item'>
            <a class="nav-link" href='{% url 'accounts:reset_password' %}'>Forgotten Password?</a>

html中的所有内容都是正确格式化的,但我认为有些代码是错误的。真对不起

FYI:在豁免工程中注册!

那有什么问题吗?thnx

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-26 12:25:32

豁免正则表达式r'^account/reset-password$'没有尾随斜杠。这与您的URL模式r'^reset-password/$'中的regex不一致,它确实有一个尾随斜杠。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52516918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档