1

我有一个简单的操作,它将单个参数作为字符串,它返回一个工作正常的用户个人资料页面。

然而,今天有用户告诉我,除非登录,否则没有人可以看到他的个人资料,它只是重定向到登录页面。

我检查了 IIS7 日志文件,我可以看到它正在返回 302 状态,然后加载登录页面。

这是不起作用的页面:

http://www.house-mixes.com/profile/mixchemist/

这是一个运行良好的示例:

http://www.house-mixes.com/profile/housemixes/

动作/控制器上没有授权属性,我确实安装了 Helicon Ape 为我管理一些自定义重定向,但我已经禁用了它并且仍然得到相同的结果。

我很困惑,只有在某个个人资料上才可能导致这种情况,有什么想法吗?

编辑:

在任何级别,默认或自定义,都没有 Authorize 属性。我的 web.config 非常标准,我使用的是 MVC2:

<authentication mode="Forms">
      <forms cookieless="UseCookies" enableCrossAppRedirects="true" loginUrl="~/Login" name=".ASPXAUTH" slidingExpiration="true" timeout="100000" requireSSL="false" />
    </authentication> 

这是我的控制器操作(控制器级别的唯一属性是 [HandleError]):

[Transaction]
[PassParametersDuringRedirect]
[ModelStateToTempData]
[HttpGet]
public ActionResult Index(string artist)
{
    Account account = accountTasks.GetProfileByUsername(artist);

    if (account == null)
        return RedirectToAction<HomeController>(x => x.Index(), null);

    var viewModel = Mapper.Map<Account, ProfilePageViewModel>(account);

    return View(viewModel);
}

保罗

4

3 回答 3

3

这绝对看起来像一个需要身份验证的操作。不知道问题出在哪里,因为您没有显示任何代码,也没有解释您的网站是如何工作和组织的,但是您可能会开始寻找[Authorize]属性(自定义或默认属性,以及全局操作过滤器,如果这是 ASP.NET MVC 3 应用程序)以及<authorization>web.configs 中的部分。

这与一些运行的自定义代码绝对相关,并且只需要身份验证才能访问此资源。

于 2011-06-20T13:28:31.140 回答
1

发现了问题,您说得对,控制器内部的操作上放置了一个 Authorize 属性,由于视图中的 Html.RenderAction() 而调用了控制器。

它不适用于特定用户的原因是因为我允许用户将不同的小部件添加到他们的个人资料中以安排他们的选择方式,这是一个启用了 Authorize 属性的特定小部件。

以为我会发回答案,以防将来让其他人失望。

于 2011-06-21T11:56:38.500 回答
1

PM> Install-Package Glimpse

使用 Glimpse Web Debugger 提供的工具可以非常清楚地了解 MVC 所看到的内容。

于 2011-06-20T13:49:01.997 回答