Node.js expressjs中基于角色的路由器

Node.js expressjs中基于角色的路由器,node.js,rest,express,routes,roles,Node.js,Rest,Express,Routes,Roles,我正在开发一个电子商务系统,它有三个不同的角色:管理员、客户和客户,管理员和客户可以通过网站访问该系统进行系统管理(任何CRUD流程),客户可以查看其手机上的内容。所以基本上,管理员和客户端不能使用他们的id和密码登录到手机,反之亦然。该移动应用程序采用React Native设计,这意味着客户只需使用API检索数据或将数据更新到数据库 关于Express Js的路由器设计(以登录为例),我应该: 例如,设计我的路由器app。使用('/api/login')让两个用户类型都可以登录并决定要重定向

我正在开发一个电子商务系统,它有三个不同的角色:管理员、客户和客户,管理员和客户可以通过网站访问该系统进行系统管理(任何CRUD流程),客户可以查看其手机上的内容。所以基本上,管理员和客户端不能使用他们的id和密码登录到手机,反之亦然。该移动应用程序采用React Native设计,这意味着客户只需使用API检索数据或将数据更新到数据库

关于Express Js的路由器设计(以登录为例),我应该:

  • 例如,设计我的路由器
    app。使用('/api/login')
    让两个用户类型都可以登录并决定要重定向的页面或api,使用中间件来确定角色(这意味着我需要为MySQL数据库中的角色添加一个新表)

  • 分别处理路由器,
    app.use('/api/admin/login')
    用于管理员和客户端,
    app.use('/api/user/login')
    用于用户。因此,如果通过网页,它将调用
    /api/admin/login
    api,对于移动设备,它将调用
    /api/user/login


  • 为了更好地组织我的代码。

    我认为这是不可能的。您可以使用动态路由。取决于平台。你说不可能是什么意思?如果我错了,请纠正我。您希望首先登录,然后查询数据库以确定用户是管理员还是客户端。然后重定向到任何路由?目前我没有为MySQL中的角色设计表,因为我不确定这是否是我案例的最佳实践。所以我的想法是,如果用户通过手机登录,它将调用/api/user/login进行帐户授权,否则如果通过网站,它也将调用/api/admin/login。这意味着默认情况下,如果有人通过网站登录,它将被归类为管理员或客户端,如果是移动应用程序,那么它将是客户。这就是为什么我在MySQL中为admin和customer设计了两个不同的表,所以每个授权只会引用自己的表。如果用户从网站登录,它会检查admin表,如果通过手机,它会检查用户表(Id、email等)。我认为这是不可能的。您可以使用动态路由。取决于平台。你说不可能是什么意思?如果我错了,请纠正我。您希望首先登录,然后查询数据库以确定用户是管理员还是客户端。然后重定向到任何路由?目前我没有为MySQL中的角色设计表,因为我不确定这是否是我案例的最佳实践。所以我的想法是,如果用户通过手机登录,它将调用/api/user/login进行帐户授权,否则如果通过网站,它也将调用/api/admin/login。这意味着默认情况下,如果有人通过网站登录,它将被归类为管理员或客户端,如果是移动应用程序,那么它将是客户。这就是为什么我在MySQL中为admin和customer设计了两个不同的表,所以每个授权只会引用自己的表。如果用户从网站登录,它会检查admin表,如果通过移动,它会检查用户表(Id、电子邮件等)