Web Api
, userId :
public class MyAuthorizeAttribute : AuthorizeAttribute
{
public override async Task OnAuthorizationAsync(HttpActionContext actionContext, CancellationToken cancellationToken)
{
if (actionContext.ActionDescriptor.GetCustomAttributes<AllowAnonymousAttribute>().Any()) return;
base.OnAuthorization(actionContext);
Guid userId;
if (actionContext.RequestContext.Principal.Identity.IsAuthenticated
&& Guid.TryParse(actionContext.RequestContext.Principal.Identity.GetUserId(), out userId))
{
actionContext.Request.Properties.Add("userId", actionContext.RequestContext.Principal.Identity.GetUserId());
}
}
}
, Application Startup (Global.asax web_start, Startup.cs) :
config.Filters.Add(new MyAuthorizeAttribute());
Owin Startup.cs - :
public void Configuration(IAppBuilder app)
{
ConfigureOAuth(app);
HttpConfiguration config = new HttpConfiguration();
WebApiConfig.Register(config);
config.Filters.Add(new MyAuthorizeAttribute());
}
userId jus:
Guid userId = (Guid) ActionContext.Request.Properties["userId"];
MVC
MVC :
using Microsoft.AspNet.Identity;
...
User.Identity.GetUserId();
, Web Api:
public override void OnAuthorization(AuthorizationContext filterContext)
{
...
Guid userId = filterContext.HttpContext.User.Identity.Name.GetUserId();
...
}