数据库问题 - 如何设置用户帐户/ pswds以便他们只能添加/更改他们的数据?

时间:2014-02-01 16:27:30

标签: mysql relational-database user-accounts authentication

好的......我正在努力创建一个移动应用,允许两组用户做两件事。

基本上,该项目的目标是:

A组用户:创建帐户/ pswd并可以将他们的数据输入数据库和/或更改他们现有的数据(但仅限于他们的数据)

B组用户:可以搜索数据库以获取A组插入的信息。在轨道上我想设置它以便他们可以创建用户帐户,这样他们也可以将关键信息保存到他们的帐户以便更快地回忆(因此他们不必查找他们定期搜索的信息) - 但这是在轨道上。

我使用我的网络托管帐户提供的mySQL设置了关系数据库(这似乎是最简单的方法)。

我只是想弄清楚如何处理用户帐户创建/身份验证位,因为每个组只能将数据更改/插入自己的帐户,但可以搜索其他人提交的信息。< / p>

提前致谢。

2 个答案:

答案 0 :(得分:0)

使用mysql设施管理权限:角色,用户和权限。

浏览mysql官方文档(即http://dev.mysql.com/doc/workbench/en/wb-adding-roles.html)。

您可以创建两个角色:groupA可以INSERT/SELECT/UPDATE一组表,groupB可以执行相同但在另一组表中。

您可以在所需的表格中分配INSERT权限,但在所有表格上分配SELECT权限。

希望这些信息能为您带来一些启示......

答案 1 :(得分:0)

首先,这听起来像一个巨大的项目,我相信有一些框架可以为你做到这一点。但是,如果您正在尝试自己继续阅读。 这可以通过几种方式完成。我会尽量详细说明。这需要SQL以及应用程序开发/软件工程知识。

第1步:设置数据库 您将需要以下表格:所有ID都是自动递增的主键,其他字段可以是varchar,除了名称中包含日期的字段

  1. sessions [id,uid,random_token,datecreated]
  2. resourcescope [摆脱,名字]
  3. 用户[uid,first,last,email,username,salted_pwd]
  4. user_type [id,name,description]
  5. user_resourcescope [id,uid,rid] // userid和resourcescope之间的查找表
  6. 我更喜欢使用Java或python,因为你可以使用依赖注入或装饰器。因此,在检查用户是否具有访问权限时,您不必编写大量代码。

    全部付诸实践。

    1. When a user signs up, you save them into a user database. Depending on the user type, you give them different permissions. Next, you save the user permissions inside the user_resourcescope table.
    

    您现在应该拥有以下内容。 用户表

    UID | first | last | email           | username  | salted_pwd    | usertype
     1  | james | iri  | example@isp.com | jiri1928  | klasdjf8$kljs |     1
    

    UserType表

     usetype_id | Name
         1      | Basic users
         2      | Searcher 
    

    ResourceScope表

       rid    | Name
        1     | FindContent
        2     | CreateContent
        3     | DeleteContent
    

    User_Resourcescope

      id  | uid  | rid
       1  |  1   |  1
       2  |  1   |  3 
    

    会话

    id  | uid  | random_token    | datecreated
     1  |  1   | ldkjfald882u3u  | 1391274870322
    

    每个资源代表系统内的请求。例如,

    http://api.myapi.com/content/add - This would be associated with the ResourceScope CreateContent
    http://api.myapi.com/content/delete- This would be associated with the ResourceScope CreateDelete
    http://api.myapi.com/content/search - This would be associated with the ResourceScope SearchContent
    

    当有人尝试创建内容时,您可以通过验证其会话信息来检查其信用是否正确,并通过检查User_Resourcescope表来检查他们是否拥有正确的权限。

    To prevent users from deleting content that is not theirs. Inside the content table you can add a creator field and put the user id associated with the content. And if someone try to delete content you can check their user id against the creator field.