我有一个小型的 Go 网络服务器,可以在用户登录时向他们显示数据。我试图实现的问题是让网页仅在特定用户登录时显示某些信息。例如,当管理员登录时,会有一个他们可以在网络上看到的仅限管理员的项目列表-页。
我遇到的问题是由于某种原因我的 Go 代码没有将用户名存储在我调用的数组中,所以当我将它传递给 JavaScript 时它是空白的。
以下是我正在努力处理的代码的 3 个主要部分:
main.go
package main
import "fmt"
func authHandler(w http.ResponseWriter, r *http.Request) {
r.ParseForm()
usernameArray, hasUsername := r.PostForm["j_username"]
//This line added for debugging purposes
log.Println("username:", usernameArray[0])
if hasUsername {
fmt.Fprintf(w, "%s", usernameArray[0])
}
}
func main() {
http.HandleFunc("/getAuth", authHandler)
}
javascript.js
请注意,这是 AngularJS
$scope.init = function() {
checkAuthentication();
};
checkAuthentication = function() {
$http.get("/getAuth").then(
function(response) {
var username = response.data;
console.log(username): //Added for debugging purposes
if (username === "admin") {
$scope.showAdminOnlyItems = true;
}
});
}
main.html
<div id="admin-only-items" ng-show="showAdminOnlyItems">
<hr style="border:1px solid">
<p style="text-align: center">admin only: </p>
<div id="adminOnlyButtom">
<button class="button" data-ng-click="doSomething()">Do something</button>
</div>
</div>
同样,我只希望在管理员登录时显示该 div,Go 需要将用户名发送到 javascript 以验证这一点。通过在 Go 中添加调试行并启动服务器,我得到了这个:
2018/11/19 16:28:42 http: panic serving 10.240.49.238:59621: runtime error:
index out of range
goroutine 26 [running]:
net/http.(*conn).serve.func1(0xc42009f720)
C:/Go/src/net/http/server.go:1726 +0xd0
panic(0x79f820, 0xe17940)
C:/Go/src/runtime/panic.go:502 +0x229
main.authHandler(0xc56220, 0xc420135180, 0xc4207a3500)
D:/src/main.go:346 +0x1d8
所以很明显 usernameArray 是空的,不知道我做错了什么。谁能帮我告诉我为什么 authHandler 中的 usernameArray 为空?
吃鸡游戏
相关分类