我认为工作正常,直到我在Admin区域的productcontroller的Create操作中添加了Authorize属性。
[Authorize]
public ActionResult Create()
{
ViewBag.Action = "Create";
VewBag.Category = new SelectList(this.categoryCoreModel.Categories, "CategoriaKy", "CategoriaDescIT");
ViewBag.SubCategory = new SelectList(this.subCategoryCoreModel.SubCategories, "CategoriaSubKy", "CategoriaSubDescIT");
return this.View("Create", new ProductEditModel ());
}
在我看来
<div class="form">
@using (Html.BeginForm((string)ViewBag.Action, "Product", FormMethod.Post, new { Model, enctype = "multipart/form-data" }))
{
...............
.............
}
我的问题是当我点击“保存”按钮时,它会重定向到另一个不存在的Admin / Home网址。并且Form标签也丢失了。我在这里失踪了什么?
编辑: 成功登录后,loginpartial视图呈现的表单似乎使我的产品表单变得混乱。
@(Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm" })) {
@Html.AntiForgeryToken()
<a href="javascript:document.getElementById('logoutForm').submit()">Log off</a>
}
任何想法或反馈都会很棒
答案 0 :(得分:1)
我原本希望看到[Authorize(Roles =“SomeRoleName”)],以便您的授权可以证明用户具有该角色,因为您没有指定角色(并且您可能实际上没有登录)将您重定向到角色提供程序指定的位置,即loginUrl
您是否正在使用SimpleRoleProvider?
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
<roleManager enabled="true" defaultProvider="SimpleRoleProvider">
<providers>
<clear />
<add name="SimpleRoleProvider" type="Models.SimpleRoleProvider, Models, Version=1.0.0.0, Culture=neutral" />
</providers>
</roleManager>
如果是这样,那么HttpContext.User.Identity和/或HttpContext.User.IsInRole不会返回[Authorize()]所期望的内容。我建议你查看登录部分并确保将用户设置为已记录,并确保他/她具有授权锁定的角色
希望这有帮助