我在xamarin表单中使用web api。使用microsoft帐户登录后,我发送带请求的访问令牌,每个端点都正常工作。但现在我们已经在控制器上实现了角色。我使用过自定义身份验证。我想从请求中获取userID,而不是来自客户端请求。我担心的是,我是否应该使用令牌或任何其他方式获取用户详细信息?请指导我。 我要遵循以下步骤使用该服务: - 1.使用Microsoft帐户登录。 2.获取访问令牌并传入请求标头。
这里是web api Custom AuthorizationFilter代码: -
public override void OnAuthorization(HttpActionContext actionContext)
{
WMSEntities db = new WMSEntities();
//IEnumerable<string> auth_token;
//actionContext.Request.Headers.TryGetValues("x-zumo-auth", out auth_token);
//var result = Get<List<AzureUserDetail>>(HttpWebRequest.Create(url + "/.auth/me"), auth_token.FirstOrDefault(), null)?.FirstOrDefault();
//actionContext.Request.Headers.TryGetValues("email", out auth_token);
string userID = actionContext.ControllerContext.RequestContext.Principal.Identity.Name;
var user = db.UserProfiles.FirstOrDefault(x => x.Name == userID);
if (user == null)
actionContext.Response = new HttpResponseMessage(System.Net.HttpStatusCode.Unauthorized);
else
{
bool ok = false;
foreach (var item in user.AppRoles)
{
foreach (string ar in accessRoleNames)
{
if (item.Name == ar)
ok = true;
}
}
db.Dispose();
if (!ok)
actionContext.Response = new HttpResponseMessage(System.Net.HttpStatusCode.Unauthorized);
}
base.OnAuthorization(actionContext);
}
我应该取消评论三行代码或任何其他方式来获取用户ID。
答案 0 :(得分:1)
由于您使用基于令牌的身份验证,我会根据令牌获取用户信息。
您可能遇到用户在服务器上没有Identity但已提交有效身份验证令牌的情况。