我的MVC 4.0/Razor站點出現問題。MVC允許匿名,登錄後仍能獲得當前用戶
這是我最近繼承的(尚未啓動)公共站點。 所有頁面的90%應該對所有人都可用,其餘的對於超級用戶並需要認證。
這是通過面向公衆的頁面上的AllowAnonymous屬性來處理的,它是這樣實現的;
public class RequireAuthenticationAttribute : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
var skipAuthorization = filterContext.ActionDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true) ||
filterContext.ActionDescriptor.ControllerDescriptor.IsDefined(
typeof(AllowAnonymousAttribute), true);
if (!skipAuthorization)
base.OnAuthorization(filterContext);
}
}
現在的問題是,我想在面向公衆的網站的一些自定義(爲便於討論,我們假設一個「目前登錄:XYZ」 -label的地方)。我試過的是使用User.Identity,但在所有具有AllowAnonymous,User.Identity.Name ==「」的頁面上,即使超級用戶登錄。(如果他將url更改爲頁面身份驗證,他再次登錄,並且User.Identity.Name是正確的)。
有什麼辦法可以同時使用Allow Anonymous和跟蹤誰登錄?