栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

ASP.NET MVC 5

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ASP.NET MVC 5

您不需要直接向数据库查询当前的ApplicationUser。

这就引入了新的依赖关系,即需要为初学者提供额外的上下文,但是以后用户数据库表会发生变化(过去2年中有3次变化),但API保持一致。例如,

users
现在
AspNetUsers
在Identity
framework中调用该表,并且几个主键字段的名称保持不变,因此多个答案中的代码将不再 按原样 工作。

另一个问题是对数据库的基础OWIN访问将使用单独的上下文,因此来自单独的SQL访问的更改可能会产生无效的结果(例如,看不到对数据库所做的更改)。同样,解决方案是
使用 提供的API,而不是尝试 解决 该问题。

以ASP.Net身份访问当前用户对象的正确方法(截至当前)是:

var user = UserManager.FindById(User.Identity.GetUserId());

或者,如果您有异步操作,则类似:

var user = await UserManager.FindByIdAsync(User.Identity.GetUserId());

FindById
要求您具有以下using语句,以便非异步
UserManager
方法可用(它们是UserManager的 扩展方法
,因此,如果不包括此 扩展名 ,则只会看到
FindByIdAsync
):

using Microsoft.AspNet.Identity;

如果您根本不在控制器中(例如,您正在使用IOC注入),那么将从以下位置完整检索用户ID:

System.Web.HttpContext.Current.User.Identity.GetUserId();

如果您不在标准帐户控制器中,则需要向控制器添加以下内容(作为示例):

1.添加以下两个属性:

    /// <summary>    /// Application DB context    /// </summary>    protected ApplicationDbContext ApplicationDbContext { get; set; }    /// <summary>    /// User manager - attached to application DB context    /// </summary>    protected UserManager<ApplicationUser> UserManager { get; set; }

2.将其添加到Controller的构造函数中:

    this.ApplicationDbContext = new ApplicationDbContext();    this.UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(this.ApplicationDbContext));

2015年3月更新

注意: Identity框架的最新更新更改了用于身份验证的基础类之一。 现在,您可以从当前HttpContent的Owin上下文中访问它。

ApplicationUser user = System.Web.HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>().FindById(System.Web.HttpContext.Current.User.Identity.GetUserId());

附录:

当将EF和Identity
framework与Azure一起使用时,通过远程数据库连接(例如,对Azure数据库的本地主机测试),您可以随意打出可怕的“错误:19-物理连接不可用”。由于原因被埋没在Identity
framework中,因此您无法在其中添加重试(或似乎丢失的内容

.Include(x->sometable)
),因此需要
SqlAzureExecutionStrategy
在项目中实现自定义。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/370629.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号