本文最后更新于 2021年04月12日 已经是 897天前了 ,文章可能具有时效性,若有错误或已失效,请在下方留言。
前言
前后端分离对于一个项目来说可以大大缩短开发时间,前端和后端按照统一的约定来定义接口,最终将前端后端结合,项目就可以运行了,目前很多网站都采用的是nginx的反代来实现的,这里我们采用iris的文件系统
步骤
后端编写
后端搭建好框架和一些接口(包括数据库连接,操作,路由等等,这里我就不过多赘述了)下面是本文重点介绍的:
-
在项目根目录新建一个文件夹来存放前端文件,这里我文件夹的名字是
admin
,或者直接用vue create
来创建 -
然后在go文件里声明路径
app.HandleDir("/admin", "admin/dist/spa")
注意后面路径是前端文件编译后的路径 -
此时要注意前端文件的配置
publicPath: '/admin',
因为不是根目录所以要写上子目录的路径 -
后续我将采用jwt来进行鉴权,故无需配置csrf保护
在这里贴上我项目的部分代码
app := iris.New()
app.UseGlobal(before)
app.Use(logger.New())
jwtHandler := jwtmiddleware.New(jwtmiddleware.Config{
ValidationKeyGetter: func(token *jwt.Token) (interface{}, error) {
return []byte(conf.Sysconfig.CsrfKey), nil
},
SigningMethod: jwt.SigningMethodHS256,
//验证未通过错误处理方式
ErrorHandler: func(ctx iris.Context,e error){
if conf.Sysconfig.Debug {
_, _ = ctx.JSON(model.ReturnMsg{
Code: 0,
Data: nil,
Msg: e.Error(),
})
return
}else {
_, _ = ctx.JSON(model.ReturnMsg{
Code: 0,
Data: nil,
Msg: "登录信息验证失败,请重新登录谢谢!",
})
return
}
},
})
admin := app.Party("/api/admin",jwtHandler.Serve)
admin.Get("/createNotice", func(ctx iris.Context) {
info := ctx.Values().Get("jwt").(*jwt.Token).Claims.(jwt.MapClaims)
a:=info["name"].(string)
ctx.WriteString("ok "+a)
})
前端编写
前端目前最需要在 /admin
目录下进行开发就行了,这里也不多赘述了
重要提示
重要提示
前后端分离,请不要完全依赖前端进行鉴权,后端鉴权才是最主要的。
这里附上之前写的项目https://github.com/super-coffee/coffee-keys-go
这也叫前后端分离?
请前往查看 https://github.com/super-coffee/coffee-keys-go
test