当数据库表存储用户为整数时,在web api控制器中获取用户名。

 2023-02-17    376  

问题描述

在某些Web API控制器内部,我想按照此答案中所示访问用户: https://stackoverflow.com/A/12705062/538962

来自答案的示例代码…

当数据库表存储用户为整数时,在web api控制器中获取用户名。

[Authorize]
public List<Product> GetProductsFromId()
{
    string username = User.Identity.Name;
    return _productService.GetProductsFromUsername(username);
}

我方案中的ASP.NET Membership表位于不同的数据库服务器上,而不是数据库服务器运行.应用程序的数据库具有其自己的用户表,其中包含IDENTITY column作为Primary Key在用户表上,然后基于IDENTITY column,包括CreatedByUserID和UpdatedByUserID列的其他表格为integers在用户表中.

问题是,如果CRUD类型操作取决于在表中更新的用户作为INTEGER,则仅访问用户名不足;我们仍然必须到达那个用户名的相应UserID.

这可以用另一个加入用户表来完成,但这似乎有点kludgy.关于处理这个问题的最佳方式是什么?

推荐答案

从ASP.NET Web API的角度来看,使用会员提供者和盒外形的FormsAuthentication已经kludgy,所以为什么不加入? :)无论如何,假设您的Web API仅由Web客户端消耗,FA很酷,您可以使用FA票证的UserData来放入用户ID中.这样,您无需每次击中DB即可获取ID.但是您需要自己创建机票,而不是让默认的开箱即用的实施.然后,在PostauthenticateRequest事件中,您可以从票证中读取用户ID并将其设置为身份.当然,您需要使用ID属性为此创建自己的自定义标识,或者如果您在.NET 4.5上,则可以使用FormsIdentity本身,但您可以使用Neugnidentifier索赔来存储ID.检查出来 – ASP.NET MVC – Set自定义Iidentity或Iprincipal .

以上所述是小编给大家介绍的当数据库表存储用户为整数时,在web api控制器中获取用户名。,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/34163.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。