0

Windows 인증이있는 ASP.NET MVC 5 응용 프로그램입니다.Windows 인증이없는 Syncfusion MVC 그리드

의 Web.config

... 
<system.web>  
    <identity impersonate="true"/> 
    <authentication mode="Windows" /> 
    <authorization> 
     <deny users="?" /> 
    </authorization> 
... 

CONTROLLER

... 
public class TemplatesController : Controller 
{ 
    // GET: Templates 
    public ActionResult Index() 
    { 
     HRDataContext ctx = new HRDataContext(); 
     var l = ctx.SurveyTemplates.ToList(); 

     return View(l); 
    }  

    [AllowAnonymous] 
    public ActionResult Update(SurveyTemplate value) 
    { 
     //OrderRepository.Update(value); 
     //var data = OrderRepository.GetAllRecords(); 
     return Json(value, JsonRequestBehavior.AllowGet); 
    } 

    [AllowAnonymous] 
    public ActionResult Insert(SurveyTemplate value) 
    { 
     //OrderRepository.Add(value); 
     //var data = OrderRepository.GetAllRecords(); 
     return Json(value, JsonRequestBehavior.AllowGet); 
    } 

    [AllowAnonymous] 
    public ActionResult Delete(int key) 
    { 
     //OrderRepository.Delete(key); 
     //var data = OrderRepository.GetAllRecords(); 
     var data = new List<SurveyTemplate>(); 
     return Json(data, JsonRequestBehavior.AllowGet); 
    } 
} 
... 

VIEW

@(Html.EJ().Grid<SurveyTemplate>("grdTemplate") 
     .Datasource(ds => ds.Json(Model).UpdateURL("Update").InsertURL("Insert").RemoveURL("Delete").Adaptor(AdaptorType.RemoteSaveAdaptor)) 
    .EnableRowHover(false) 
    .AllowSelection() 
    .IsResponsive() 
    .AllowFiltering() 
    .AllowSorting() 
    .FilterSettings(filter => { filter.FilterType(FilterType.Menu); }) 
    .EditSettings(edit => { edit.AllowAdding().AllowDeleting().AllowEditing(); }) 
    .ToolbarSettings(toolbar => 
    { 
     toolbar.ShowToolbar().ToolbarItems(items => 
     { 
      items.AddTool(ToolBarItems.Add); 
      items.AddTool(ToolBarItems.Edit); 
      items.AddTool(ToolBarItems.Delete); 
      items.AddTool(ToolBarItems.Update); 
      items.AddTool(ToolBarItems.Cancel); 
     }); 
    }) 
    .Columns(col => 
    { 
     col.Field("SurveyTemplateId") 
      .HeaderText("Id") 
      .IsPrimaryKey(true) 
      .TextAlign(TextAlign.Right) 
      .Width(75) 
      .Visible(false) 
      .Add(); 
     col.Field("Name").Width(100).Add(); 
     col.Field("Description").Width(150).Add();   
    }) 
) 

응용 프로그램을 렌더링 할 수있는 인덱스 V 그러나 데이터 그리드를 편집 할 때 컨트롤러가 아니라 서버 응답을 '인증되지 않음'으로 호출합니다.

컨트롤러 응답

HTTP/1.1 401 Unauthorized 
Cache-Control: private 
Content-Type: text/html; charset=utf-8 
Server: Microsoft-IIS/10.0 
X-StackifyID: V1|80000147-0003-ff00-b63f-84710c7967bb| 
X-SourceFiles: =?UTF-8?B?QzpcS2Fyb2xcUHJvamVrdHlcSFIgLSBPY2VuYSBQcmFjb3duaWthXEhSIC0gT2NlbmEgcHJhY293bmlrYVxPY2VuYVByYWNvd25pa2FORVdcSW5zZXJ0?= 
WWW-Authenticate: Negotiate 
WWW-Authenticate: NTLM 
X-Powered-By: ASP.NET 
Date: Tue, 03 Jan 2017 22:55:49 GMT 
Content-Length: 6128 
Proxy-Support: Session-Based-Authentication 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>IIS 10.0 Detailed Error - 401.2 - Unauthorized</title> 
<style type="text/css"> 
<!-- 

방법 또는 방법이 컨트롤러에 인증을 해제 호출 그리드의 인증을 가능하게?

+0

Windows 인증을 사용하면 [AllowAnonymous]가 필요하다고 생각하지 않습니다. 어떤 컨트롤러 동작이 요청에 들어갈 것인가? – shreesha

+0

@shreesha 난 그냥 나쁜 URL을 해결. 나는 풀 경로가 아닌 액션 이름 만 설정했습니다. – BWA

+0

오 :) @BWA 왜 [AllowAnonymous]가 필요한가요? – shreesha

답변

1

문제가 해결되었습니다.

문제는 그리드 정의했다 :

Datasource(ds => ds.Json(Model).UpdateURL("Update").InsertURL("Insert").RemoveURL("Delete").Adaptor(AdaptorType.RemoteSaveAdaptor)) 

은 다음과 같아야합니다

Datasource(ds => ds.Json(Model).UpdateURL("Templates/Update").InsertURL("Templates/Insert").RemoveURL("Templates/Delete").Adaptor(AdaptorType.RemoteSaveAdaptor)) 

URL이 아니라 액션 이름 가득합니다.