2011-07-30 55 views
0

有人告诉我,如果我想要抓住控制器内的要求,我可以这样做:从控制器检索索赔 - 如何?

IClaimsIdentity u = (IClaimsIdentity) this.HttpContext.User.Identity; 
var ni = u.Claims.First(x => x.ClaimType == ClaimTypes.NameIdentifier).Value; 

然而,这违反了视图和控制器之间的距离。控制器可能会在没有HttpContext的环境中调用 - 那么执行该操作的正确方法是什么?

TIA - ekkis

回答

1

就离开了HttpContext和直接使用控制器的User属性:

var u = (IClaimsIdentity)this.User.Identity; 
+0

洛尔 - 确定。凉。 – ekkis