python - Django:当登录详细信息与自定义模型详细信息不匹配时,不允许用户查看页面
问题描述
我有存储登录详细信息的自定义模型:
class UserRegistration(models.Model):
# Auto updated when data is inserted
created_at = models.DateTimeField(auto_now_add=True, auto_now=False)
# Auto updated when data is altered
updated_at = models.DateTimeField(auto_now_add=False, auto_now=True)
username = models.CharField(max_length=255, null=True)
password = models.CharField(max_length=255, null=True)
first_name = models.CharField(max_length=255, null=True)
last_name = models.CharField(max_length=255, null=True)
def __str__(self):
return self.first_name
urls.py 是
url(r'^login/$', view.login_page, name='login_page'),
views.py 是
def login_page(request):
if request.method == 'GET':
return render(request, "login_page.html")
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
print username, password
credentials_matches = False # considering credentials are wrong
all_users = UserRegistration.objects.all()
for user in all_users:
if user.username == username and user.password == password:
credentials_matches = True
break
if credentials_matches:
return HttpResponse('success')
# return redirect("http://127.0.0.1:8000/lmtech")
else:
return HttpResponse('fail')
如果用户没有登录,我有其他视图我不希望显示给用户。我虽然关于 @login_required() 但在这种情况下,用户详细信息在自定义模型中。我该如何解决这个问题?
解决方案
您不能像这样制作自定义用户模型。编写自己的身份验证系统总是不安全的。
您应该使用标准的内置身份验证框架 - 您可以替换您自己的用户模型,但它必须从 AbstractBaseUser 继承,请参阅文档。但是,似乎没有太多理由这样做,因为您没有添加任何自定义功能。
推荐阅读
- reactjs - Redux Action“类型别名'Action'循环引用自身”
- python - 如何在 Django 中列出客户的国家/地区?
- twitter-bootstrap - Boostrap table change icon by fontAwesome by icon bootstrap
- javascript - 如何在 JS xhttp.open() 中正确提供文件路径?
- javascript - Nodejs无法读取未定义的属性“文件名”
- bash - 为什么这个 bash 脚本出现时看不到 slurm 日志文件?
- c# - Azure Key Vault - 是否有用于此的 .NET Core API?
- python - 自定义 pandas-profiling 中的图(更改相关热图中的颜色/颜色条/..)
- windows - 在ubuntu运行的tomcat9上,通过jenkins管道在同一根路径下部署多个war文件
- headless - 如何正确编译 ParaView 以进行无头屏幕外渲染?