【发布时间】:2010-09-12 03:49:43
【问题描述】:
更新:我无法删除这个问题,因为答案已被投票,但它根本不是我所问问题的答案。我想删除这个,因为已经有一周没有答案了,它只是拖累了我的接受百分比。谢谢。
我有一个强类型母版页,其中包含基于当前已验证用户的 UserId 的信息:
(Guid)Membership.GetUser().ProviderUserKey
所有其他正常的操作/视图都要求用户在查看之前进行身份验证,这意味着用户的信息保证可用。
问题是,当我尝试访问用户信息时,我只会得到空引用异常。从网站的母版页。我猜这是因为没有适用于母版页的 [Authorize] 属性之类的东西。
我有这个问题吗?还有其他可能的原因吗?
简单示例:
我网站的各个页面都使用继承母版页面视图模型的视图模型对象:
<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage<Models.MasterViewModel>" %>
经过身份验证的用户对象是此基本视图模型的属性。所有页面都需要身份验证,因此任何没有身份的人都会被重定向到登录视图,该视图一直在完美运行。因此,在视图中使用用户属性的简单尝试如下:
<%= Model.UserName %>
我将把它放在其中一个视图中,以及网站的主视图中。
当用户已经通过身份验证时,一切正常,用户名会在页面上打印两次。当身份验证票过期或出现新用户时,页面不会重定向到登录,而是生成一个异常,抱怨来自主视图中的 的空引用.
当我从主视图中删除 并将其保留在普通视图中时,它会按应有的方式重定向,而不会引发错误。
我希望这更清楚一些。
编辑:
也许有人可以提供更好的方法来访问母版页中经过身份验证的用户信息?
编辑#2:
我很想看到 任何在母版页中访问经过身份验证的用户信息的示例...这对我来说真是令人头疼。
更新:
我没有接受答案,因为我非常熟悉如何测试用户是否经过身份验证。我很想知道为什么没有重定向到登录页面。
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-mvc-2