Contrib.auth偶尔进行查询?

时间:2011-11-06 14:10:49

标签: django authentication

我开发了一个学校管理应用程序。教师和其他角色拥有一个帐户(django用户)来控制学生的出勤率,行为问题等。

学生本身就是一个榜样。老师是用户代理。

此时我已经准备好扩展应用程序,允许父母访问儿童信息(这是残忍的,但是为了学生;)

我正在评估这些替代方案:

  • 仅为父访问创建一个简单的php应用程序(使用专用的db用户 和意见)。它似乎安全,但我不喜欢PHP。
  • 向学生模型添加密码字段并构建我的所有者身份验证系统。一世 不喜欢有'django认证的学生'。
  • 将学生身份验证与实际身份验证架构集成。我不喜欢这个 安全原因,这意味着检查所有观点的安全性,并将此混合为师生。
  • 仅为具有两个数据库的学生(和家长)创建一个新的django应用程序,即'school'数据库和一个带有auth的新数据库

在看到儿童信息之前,您有什么最好的方法来验证父母的身份?

任何建议都很好。非常感谢。

啊!我认为父母忘记密码很容易。

学校有超过800名学生,应用商店超过1百万的存在cheks年,很多家长采访,...

1 个答案:

答案 0 :(得分:0)

除了用户帐户之外,Django contrib.auth模型还包含组和权限。事实上,常规django用户和django管理员用户只能使用不同的权限共享相同的模型。

考虑到,默认的身份验证模型(从安全的角度来看)已经分享了更大的后果,如果发生违规,我没有看到为什么你不应该让学生使用相同的模型进行身份验证而只是分配他们进入一个单独的组并管理他们的权限。你的安全性不会比现有的更糟或更好。

就开发方面而言,您只需在视图处理程序上使用装饰器,这些装饰器仅限于教师/家长,以限制学生访问它们。 请参阅:Permissions decorator

如果由于某种原因这是不可察觉的(虽然我不能推断你所说的理由),你将不得不这样做:

  1. 编写自己的中间件,将自己注入contrib.auth(重新发明轮子)
  2. 使用外部系统验证权限(与Django的方法完全正交,实际上会使系统复杂化,而不是使用集成的contrib.auth)。
  3. 执行自己的身份验证系统的另一个缺点是,您现在必须担心Django为您解决的所有类型的安全问题(例如CSRF保护,SQL注入/转义以及许多其他问题)。更不用说可以使用contrib.auth提供的经过测试和验证的代码/模型的错误。