2015-05-09 2 views
0

У меня есть приложение AngularJS. Серверная сторона - Go и использует пакеты муксинга и сессий Gorilla Web Toolkit. Угловое приложение имеет две формы на главной странице: «Вход и регистрация». Данные отправляются на Go, используя AngularJS $http.post как JSON, и соответствующие ответы отправляются с сервера как JSON. То, что я хочу достичь, состоит в том, что две страницы должны быть представлены на главной странице веб-сайта в зависимости от того, вошел ли пользователь в систему или нет. В настоящее время, когда я отправляю детали формы Sign In, и сервер отвечает соответствующим ответом, я перезагружаю страницу, но AngularJS продолжает показывать страницу с формами, а не с новой.AngularJS страница не обновляется с сервера

AngularJS Код

angular.module('app', []) 

angular.module('app').controller('SignInController', ['$scope', '$http', function($scope, $http) { 
    $scope.formData = {} 

    $scope.signIn = function() { 
     $http.post('/signIn', { 
      email: $scope.formData.email, 
      password: $scope.formData.password 
     }).success(function(data) { 
      console.log(data) 
      if(data.ok == true) { 
       window.location.reload(true) 
      } 
     }) 
    } 
}]) 

Соответствующие Go Код Внизу SignInHandler вызывается на POST, чтобы "/" для входа в аккаунт и IndexHandler вызывается на Добраться до "/".

type JsonResponse map[string]interface{} 

func (jr JsonResponse) String() (output string) { 
    b, err := json.Marshal(jr) 
    if err != nil { 
     output = "" 
     return 
    } 
    output = string(b) 
    return 
} 

func SignInHandler(w http.ResponseWriter, r *http.Request) { 
    session, _ := sessionStore.Get(r, "user-session") 

    decoder := json.NewDecoder(r.Body) 
    var user User 
    err := decoder.Decode(&user) 
    if err != nil { 
     fmt.Fprint(w, JsonResponse{"ok": false, "message": "Bad request"}) 
     return 
    } 

    if user.Email == "" || user.Password == "" { 
     fmt.Fprint(w, JsonResponse{"ok": false, "message": "All fields are required"}) 
     return 
    } 

    userExists, u := user.Exists() 
    if userExists == false { 
     fmt.Fprint(w, JsonResponse{"ok": false, "message": "Email and/or password in invalid"}) 
     return 
    } 

    err = bcrypt.CompareHashAndPassword([]byte(u.Password), []byte(user.Password)) 
    if err != nil { 
     fmt.Fprint(w, JsonResponse{"ok": false, "message": "Email and/or password in invalid"}) 
     return 
    } 

    session.Values["userId"] = u.Id.Hex() 

    session.Save(r, w) 

    fmt.Fprint(w, JsonResponse{"ok": true, "message": "Authentication Successful"}) 
} 

func IndexHandler(w http.ResponseWriter, r *http.Request) { 
    session, _ := sessionStore.Get(r, "promandi-user-session") 

    if _, ok := session.Values["userId"]; ok { 
     http.ServeFile(w, r, "./views/home.html") 
    } else { 
     http.ServeFile(w, r, "./views/index.html") 
    } 
} 
+1

Вы проверили, отправляется ли cookie сеанса при загрузке страницы? – CuriousMind

+0

У вас был взгляд, чтобы посмотреть, что происходит с скрипачом? –

ответ

1

Он начал вести себя должным образом после того, как я добавил "Cache-Control": "не-магазин" заголовок в моем IndexHandler.

w.Header().Set("Cache-Control", "no-store") 
Смежные вопросы