没有视频教程,靠着英文文档,生啃golang iris 框架
web 启动
package main
import (
"app/views"
"github.com/kataras/iris/v12"
)
func main() {
// 分配路由组
app := iris.New()
// 设置调试模式
app.Logger().SetLevel("debug")
views.Urls(app)
// 错误处理,启动web,监听80端口
err := app.Run(iris.Addr(":80"))
if err != nil {
return
}
}
路由分配
package views
import (
"app/controllers"
"github.com/kataras/iris/v12"
"github.com/kataras/iris/v12/view"
)
func Urls(app *iris.Application) {
app.Any("/", controllers.Index)
// 设置模板渲染路径请求
app.RegisterView(view.HTML("./templates", ".html"))
// 用户注册 支持所有类型
app.Any("/register", controllers.Register)
// 用户信息
app.Any("/info", controllers.UserInfo)
// 用户登录
app.Any("/login", controllers.Login)
}
绑定登录函数
package controllers
import (
"app/middleware"
"fmt"
"github.com/kataras/iris/v12"
"github.com/kataras/iris/v12/context"
)
func Login(c *context.Context) {
switch c.Method() {
// GET 请求处理
case iris.MethodGet:
err := c.View("login.html")
if err != nil {
return
}
// POST 请求处理
case iris.MethodPost:
username := c.FormValue("username")
password := c.FormValue("password")
session := middleware.SessionManager.Start(c)
session.Set("username", username)
c.Redirect("/info")
// 直接返回 404 页面
default:
_, err := c.HTML("404 requests")
if err != nil {
return
}
}
// 中间件打印路由信息
c.Next()
}
绑定登录成功后的函数
package controllers
import (
"app/middleware"
"fmt"
"github.com/kataras/iris/v12"
"github.com/kataras/iris/v12/context"
)
func UserInfo(c *context.Context) {
// 登录成功,获取会话对象
session := middleware.SessionManager.Start(c)
// 获取从会话中获取当前登录用户的用户名
username := session.GetString("username")
// 用户名不存在,直接返回登录页面
if username == "" {
c.Redirect("/login")
return
}
// 用户名存在,直接登录
err := c.View("user_info.html", iris.Map{"username": username})
if err != nil {
return
}
}
设置会话配置
package middleware
import (
"github.com/kataras/iris/v12/sessions"
"time"
)
var SessionManager = sessions.New(sessions.Config{
Cookie: "userid",
Expires: 60 * time.Hour,
})
登录html
<!DOCTYPE html>
<html>
<head>
<title>登录面板</title>
<style>
body {
font-family: Arial, sans-serif;
}
.container {
width: 300px;
padding: 16px;
background-color: white;
margin: 0 auto;
margin-top: 100px;
box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.3);
}
input[type=text], input[type=password] {
width: 100%;
padding: 12px 20px;
margin: 8px 0;
display: inline-block;
border: 1px solid #ccc;
box-sizing: border-box;
}
input[type=submit] {
width: 100%;
background-color: #4CAF50;
color: white;
padding: 14px 20px;
margin: 8px 0;
border: none;
cursor: pointer;
}
input[type=submit]:hover {
background-color: #45a049;
}
.register-link {
margin-top: 10px;
text-align: center;
}
</style>
</head>
<body>
<div class="container">
<h2>登录面板</h2>
<form method="post">
<label><b>用户名:</b></label>
<input type="text" placeholder="请输入用户名" name="username" required>
<label><b>密码:</b></label>
<input type="password" placeholder="请输入密码" name="password" required>
<input type="submit" value="登录">
</form>
<div class="register-link">
<a href="/register">还没有账号?点击这里注册</a>
</div>
</div>
</body>
</html>
登录成功后的html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>欢迎您,{{ .username }}</h1>
</body>
</html>
目录结构