servicestack,Authentication,servicestack" /> servicestack,Authentication,servicestack" />

Authentication ServiceStack用户自定义身份验证类&;管理

Authentication ServiceStack用户自定义身份验证类&;管理,authentication,servicestack,Authentication,servicestack,我只是在寻找关于如何实施这一点的反馈: 在我的系统中,有两种类型的用户需要身份验证:用户和管理员。现在,他们将执行的任务和我存储的关于他们的数据保证他们每个人都有一个单独的数据库表来存储他们的信息/身份验证信息 我已经实现了一个名为UserCredentialsAuthProvider的工作CredentialsAuthProvider,它在/auth/credentials对用户进行身份验证。逻辑检查数据库中的User表并进行身份验证。现在,为了验证管理员身份,我应该实现第二个名为AdminC

我只是在寻找关于如何实施这一点的反馈:

在我的系统中,有两种类型的用户需要身份验证:用户和管理员。现在,他们将执行的任务和我存储的关于他们的数据保证他们每个人都有一个单独的数据库表来存储他们的信息/身份验证信息

我已经实现了一个名为
UserCredentialsAuthProvider
的工作
CredentialsAuthProvider
,它在
/auth/credentials
对用户进行身份验证。逻辑检查数据库中的
User
表并进行身份验证。现在,为了验证管理员身份,我应该实现第二个名为
AdminCredentialAuthProvider
CredentialAuthProvider
身份验证提供者,并在不同的路径(如
/user/auth/credentials
/admin/auth/credentials
中注册每个身份验证提供者,还是在相同的
tryaauthenticate
中实现管理逻辑
UserCredentialsProvider

如果上述任一解决方案是我在调用
tryaauthenticate
时如何注册单独的路由或区分管理员/用户


任何帮助都会很好。谢谢。

我会坚持使用一个端点和一个认证提供者。这将大大简化身份验证

在后台,您的身份验证提供者需要同时检查users和admins表。一旦你知道了,我将把所有来自用户和管理员表的数据转换成一个组合的用户资源。管理员应表示为具有“管理员”角色的用户。这样,您仍然可以利用ServiceStack中的内置角色


换句话说,我会在某种数据访问层下扫除复杂性,以便您的端点保持整洁。

我会坚持,只使用一个端点和一个身份验证提供者。这将大大简化身份验证

在后台,您的身份验证提供者需要同时检查users和admins表。一旦你知道了,我将把所有来自用户和管理员表的数据转换成一个组合的用户资源。管理员应表示为具有“管理员”角色的用户。这样,您仍然可以利用ServiceStack中的内置角色


换言之,我会在某种数据访问层下扫除复杂性,以便您的端点保持整洁。

谢谢您的回答。只是快速跟进一下。当我提交包含用户名/密码的登录表单json对象时,我还可以发布所请求的角色,即admin/user。如何在tryAuthenticate方法中传递请求中包含的额外“角色”?tryAuthenticate方法可以通过authService.RequestContext.Get()访问请求,因此您可以访问那里的任何其他参数。谢谢回答。只是快速跟进一下。当我提交包含用户名/密码的登录表单json对象时,我还可以发布所请求的角色,即admin/user。如何在tryAuthenticate方法中传入请求中包含的额外“角色”?tryAuthenticate方法可以通过authService.RequestContext.Get()访问请求,因此您可以访问其中的任何其他参数。