实体框架在母版页上找不到“用户”?

时间:2014-09-08 08:53:37

标签: c# .net webforms asp.net-identity

所以我按照本教程在.net中安装和使用Identity Framework。 http://www.asp.net/identity/overview/getting-started/adding-aspnet-identity-to-an-empty-or-existing-web-forms-project

在register.aspx和login.aspx页面上,一切正常。

我想从登录页面中获取此逻辑...

if (User.Identity.IsAuthenticated) {
    //do something...
}

并将其放在母版页的Page_Load中(因此我可以显示登录或注销链接,具体视情况而定)

然而,当我这样做时,我收到一条错误,内容为

  

名称'用户'在当前上下文中不存在

我在主页上的代码中使用了以下内容,这里的所有内容都在login.aspx页面上,其中'用户'找到了。

using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.Owin.Security;
using SugarSpun_v2;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
我有点困惑!您如何在母版页上使用Identity Framework?我实际上最终希望将登录表单集成到母版页本身上,所以这可能会导致我出现问题!

任何帮助表示感谢,只是刚刚发现了Indentity Framework,所以请温柔:)

2 个答案:

答案 0 :(得分:5)

尝试查看HttpContext.Current.User是否可以访问。

答案 1 :(得分:3)

如果仔细观察User.Identity.IsAuthenticated,请参阅,不是Asp.Net Identity框架的一部分。 User类以IPrincipal提供,它是.Net框架的一部分。 User.Identity正在实现IIdentity接口,该接口也是.Net框架的一部分。

AspNet Identity框架的作用是将ClaimsPrincipal作为HttpContext.Current.User ClaimsIdentity作为IIdentity

因此,使用HttpContext.Current.User的所有代码都应该与新框架一样好(在所有项目转换中为我工作)。

正如@Kippie正确回答,HttpContext.Current.User应该为您提供登录的用户详细信息。只要有HTTP请求发生。