简体   繁体   English

如何通过用户名获取 IdentityUser

[英]How to get IdentityUser by Username

I have previously worked with Membership through "System.Web.Security.Membership"我以前曾通过“System.Web.Security.Membership”与会员合作

Here, you can do the following:在这里,您可以执行以下操作:

var currentUser = Membership.GetUser();
var otherUser = Membership.GetUser(username);

...giving you a MembershipUser. ...给你一个 MembershipUser。

Now, with Identity, I can find a load of ways to get the current logged in user .现在,使用 Identity,我可以找到很多方法来获取当前登录的用户 But no way to get another user.但是没有办法获得另一个用户。

I can use:我可以用:

var userStore = new UserStore<IdentityUser>();
var userManager = new UserManager<IdentityUser>(userStore);
var user = userManager.Find(username, password);

But that takes both username and password, with no overload for just username.但这需要用户名和密码,仅用户名没有过载。

How do i get the IdentityUser from only a username?如何仅从用户名中获取 IdentityUser?

Almost every answer I find is connected to MVC.我找到的几乎每个答案都与 MVC 相关。 This is for a WCF service, where authorization is made using Identity.这适用于 WCF 服务,其中使用身份进行授权。 And in some cases the user is getting to the site from an other site with a generated "token" - an encrypted string, containing the username.在某些情况下,用户使用生成的“令牌”(包含用户名的加密字符串)从其他站点访问该站点。 From here, user is logged in and a session-cookie is set, depending on users settings.从这里,用户登录并设置会话cookie,具体取决于用户设置。

Also, is there a shorter way to get UserInformation?此外,是否有更短的方法来获取 UserInformation?

"var currentUser = Membership.GetUser(username);" “var currentUser = Membership.GetUser(用户名);”

is much more convenient than比方便多了

"var user2 = (new UserManager((new UserStore()))).Find(username, password);" "var user2 = (new UserManager((new UserStore()))).Find(username, password);"

UserManager has UserManager<TUser>.FindByNameAsync method. UserManagerUserManager<TUser>.FindByNameAsync方法。 You can try using it to find user by name.您可以尝试使用它按名称查找用户。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM