【发布时间】:2019-08-20 08:31:52
【问题描述】:
我希望能够检查访问页面的用户是否是特定用户。
例如,当用户访问我的博客应用上的“编辑帖子”页面时,我想确保该用户是帖子的作者。
目前,我检查访问“/Blog/Edit//”的用户是否具有 blog.change_post 权限。
但是,如果第二个用户(也拥有该权限)输入 URL 以更改其他人的帖子,他们将通过该权限检查并能够编辑其他人的帖子。
我想要的是一个 @user_passes_test 函数,它检查用户对象是否根据帖子的作者属性访问视图。
#/Blog/urls.py
urlpatterns = [
...
path('Edit/<int:pk>', views.BlogEdit, name='BlogEdit'),
...
]
#/Blog/views.py
@permission_required('blog.change_post', login_url='/Portal/login')
def BlogEdit(request, pk):
post = get_object_or_404(Post, pk=pk)
if request.method == "POST":
form = PostForm(request.POST, instance=post)
if form.is_valid():
post = form.save(commit=False)
post.save()
return redirect('/Blog', pk=post.pk)
else:
form = PostForm(instance=post)
return render(request, 'Blog/Edit.html', {'form': form})
【问题讨论】:
标签: python django authentication