2013-11-15 4 views
0

관리 영역의 productcontroller에서 작성 작업에 권한 부여 특성을 추가 할 때까지보기가 정상적으로 작동합니다. 내보기에서ASP.net에서 권한 부여 특성 양식 태그없이 MVC 반환 양식

[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" })) 
    { 
     ............... 
     ............. 
} 

내 문제는 내가이 존재하지 않는 관리자/홈 같은 다른 URL로 리디렉션 저장 버튼을 클릭하면됩니다. 양식 태그도 누락되었습니다. 내가 여기서 누락 된 것은 무엇입니까?

편집 : 로그인 성공 후 내 제품 양식에 엉망인 폼이 렌더링됩니다.

@(Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm" })) { 
      @Html.AntiForgeryToken() 
      <a href="javascript:document.getElementById('logoutForm').submit()">Log off</a> 
     } 

어떤 생각이나 의견은 좋은 것

내가 볼 것으로 예상 것

답변

1

[권한 부여 (역할 = "SomeRoleName")] 당신의 권한 부여는 당신이 가지고있는 사용자가 역할을 가지고 있음을 입증 할 수 있도록 역할 공급자를 지정한 위치로 리디렉션하는 역할을 지정하지 않았거나 실제로 로그인하지 않았을 수 있습니다.

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는 [권한 부여()] 기대하고 무엇 반환되지 않습니다. 기록과 나는 로그온 섹션을 확인하고 사용자가 설정되어 있는지 확인하도록 권합니다 그는 있음/그녀는 이것이 내가 역할을 사용하고 있지 않다

+0

하는 데 도움이

희망에 래치 수있는 권한을 부여하기위한 역할을 공급자. 사용자가 익명으로 인증되었습니다./Admin/Product/Create를 열면 예상대로 계정/로그인으로 리디렉션됩니다. 로그인에 성공하면/Admin/Product/Create로 리디렉션됩니다. 어느 쪽이 좋을지. 하지만 버튼을 사용하여 다시 게시하면 작업이 잘 안됩니다. 내 페이지에 form 태그가 없으므로 다른 곳으로 리디렉션됩니다. – Miller

+0

[httpget] 및 [httppost] 속성을 사용하여 메소드를 분리하고 라우팅이 httppost를 넣을 위치를 알 수 있도록 다른 시그니처를 분리합니까? 다른 서명을 제공하고 게시물을 [httppost]로 장식 한 다음 라우팅에 올바른 장소로 보내고 있음을 증명할 수 있도록 속성에 중단 점을 설정해야 할 수 있습니다. –

+0

예, 이미 [ httppost] 속성. 그러나보기에는 Authorize 속성을 추가 한 후 양식 태그가 표시되지 않습니다. 권한 부여 없이는 제대로 작동합니다. – Miller