0
我正在使用cors和asp.net成員來管理API的安全性。但是,在某些情況下,服務器可能需要代表客戶向我們的API說話。就像API背後的UI mvc項目代碼一樣。創建原則/ httpcontextbase.User來自用戶ID
由於服務器,未經授權的客戶端會進行此調用,所以asp.net cookie不會被喚醒或拾取。
我重載AuthorizeCore爲了檢查,看看是否有一個令牌:
if(httpContext.Request.Headers["x-access-token"] != null)
{
// this authorization is from token, rather than cookie
var accessToken = httpContext.Request.Headers["x-access-token"];
var security = new Security();
var decrypted = JsonConvert.DeserializeObject<TokenModel>(security.Decrypt(accessToken));
var clientip = GetClientIp(httpContext.Request);
if(httpContext.Request.Headers["x-client-ip"] == null)
{
return false;
}
if (httpContext.Request.Headers["x-client-ip"] != decrypted.Ip)
{
return false;
}
if (!IsSecretValid(decrypted))
{
return false;
}
MembershipUser u = Membership.GetUser(decrypted.UserId);
}
我所問的是,如何轉換的會員爲宗旨,以然後讓剩下的的角色等工作的代碼。
IPrincipal user = httpContext.User;
if (!user.Identity.IsAuthenticated)
{
return false;
}
if (_usersSplit.Length > 0 && !_usersSplit.Contains(user.Identity.Name, StringComparer.OrdinalIgnoreCase))
{
return false;
}
if (_rolesSplit.Length > 0 && !_rolesSplit.Any(user.IsInRole))
{
return false;
}
這是甚至可能的,如果是的話如何。