2017-12-30 8 views
0

POST 메서드의 홈 페이지로 로그인 페이지에서 리디렉션하려고하지만 제출 단추를 클릭 한 후 폼이 페이지로 리디렉션되지 않습니다.Iris 프레임 워크의 POST 메서드에서 리디렉션

아이리스 프레임 워크의 MVC 구조를 사용하고 Ctx.Redirect 메서드를 사용하여 원하는 페이지로 리디렉션하지만 작동하지 않습니다.

// login_controllers.go 
package controllers 

import (
    "github.com/kataras/iris/mvc" 
    "github.com/kataras/iris" 
    "fmt" 
) 

type LoginFormData struct { 
    Email string 
    Password string 
} 


type LoginController struct { 
    mvc.C 
} 

func (c *LoginController) Get() mvc.Result { 
    return mvc.View{ 
     Name: "login.html", 
    } 
} 

func (c *LoginController) Post() { 
    userLoginData := LoginFormData{} 
    err := c.Ctx.ReadForm(&userLoginData) 
    if err != nil { 
     c.Ctx.StatusCode(iris.StatusInternalServerError) 
     c.Ctx.WriteString(err.Error()) 
    } 

    if userLoginData.Email == "[email protected]" && userLoginData.Password == "123" { 
     c.Ctx.Redirect("/", iris.StatusSeeOther) 

     fmt.Printf("UserInner: %#v", userLoginData) 
     c.Ctx.Writef("UserInner: %#v", userLoginData) 
    } 
} 

형태의 HTML 코드는 다음과 같습니다

<form class="m-login__form m-form" action="/login" method="post"> 
    <div class="form-group m-form__group"> 
     <input class="form-control m-input" type="text" placeholder="Email" name="Email" autocomplete="off"> 
    </div> 
    <div class="form-group m-form__group"> 
     <input class="form-control m-input m-login__form-input--last" type="password" placeholder="Password" name="Password"> 
    </div> 
    <div class="row m-login__form-sub"> 
     <div class="col m--align-left"> 
      <label class="m-checkbox m-checkbox--focus"> 
      <input type="checkbox" name="remember"> 
       Remember me 
      <span></span> 
      </label> 
     </div> 
     <div class="col m--align-right"> 
      <a href="javascript:;" id="m_login_forget_password" class="m-link"> 
      Forgotten password ? 
      </a> 
     </div> 
    </div> 
    <div class="m-login__form-action"> 
     <button id="m_login_signin_submit" class="btn btn-focus m-btn m-btn--pill m-btn--custom m-btn--air"> 
     Login 
     </button> 
    </div> 
</form> 

아이리스 프레임 워크에서 POST 방식으로 리디렉션 할 수 없습니다/이동?

+0

리디렉션 이후 또는 이전에 작성하는 것은 의미가 없습니다. '... Writef ...'줄을 제거하고 어떤 일이 일어나는지보십시오. – mkopriva

+0

@mkopriva 방금 시도했지만 여전히 작동하지 않습니다./ –

+0

그리고 적어도 콘솔에서 printf 출력을 확인합니까? – mkopriva

답변

1

@mkopriva가 .Redirect를 호출하고 함수 본문에서 돌아와야한다고 말하면 리디렉션은 상태 코드와 헤더 위치를 클라이언트에 다시 보냈기 때문에 마지막 호출이어야하므로 아무 것도 쓸 필요가 없습니다 그렇지 않으면 브라우저/클라이언트가 리디렉션 경로의 내용을 리디렉션하고 작성합니다.

홍채 저장소에있는 MVC 예제에서 iris.StatusSeeOther (http 상태 코드 : 303)이 작동하지만 다른 상태를 시도하고 작동하는지 확인하십시오 (예 : 대문자를 입력 할 때마다 브라우저의 캐시를 지우십시오). iris.StatusTemporaryRedirect (http 상태 코드 : 307) 또는 Google에서 사용자의 요구에 더 적합한 올바른 리디렉션 상태 코드를 검색하십시오.

https://github.com/kataras/iris/tree/master/_examples도 참조하십시오.

+0

아마도 사이트 규칙에서 요구하는대로 저자로서 자신을 공개해야합니다.) –

+1

찾았습니다. 문제는 폼을 제출할 때 "로딩 효과"를 처리하기 위해 버튼에 동적으로 일부 클래스를 추가하는 자바 스크립트 코드 때문입니다. 이유를 정확히 모르겠지만 어떤 이유로 페이지 리디렉션을 허용하지 않았습니다. –