go - Beego:显示从表单输入字段中获取的登录用户名

标签 go web-frameworks beego

我正在使用 Beego 框架,我有两个 html View 文件,一个是登录,另一个是登陆 登录.html

<form action="/commonDashboard" name="loginForm" method="post" autocomplete="off" id="loginForm" >
            	<input type="text" placeholder="Enter your user name" id="userName" name="userName" taborder="1">
                <input type="password" class="qwerty" placeholder="Enter your password" id="userPassword" name="userPassword" taborder="2">
                <input type="button" value="Login" onclick="validatelogin();" taborder="3">
                <input type="button" value="Clear" onclick="resetForm();" taborder="3">
				<span class="forgot"><a href="#">forgot password ?</a></span>
            <!-- Virtual Keyboard -->
                <span class="virtual"><a href="#" id="passwd" class="tooltip-tipsy" title="Click to open the virtual keyboard">Virtual Keyboard  
				</span>
            </form>
        

着陆页是

<header class="top">
	<div class="container-fluid">
    	<aside class="logo"><img src="img.jpg"  class="img-responsive"></aside>
        
        <aside class="top-right">
        	<div class="profile">
            	<ul>
                	<li class="name"><img src="../static/img/profile-img.jpg" alt="Shri Ram"> Hi <a href="#">Shri</a></li>
                    <li class="logout"><a href="/login">Logout</a></li>
                    <li><a href="#">Contacts</a></li>
                    <li class="last"><a href="#">Help</a></li>
                </ul>
            </div>
            
            <div class="login-time">
            	<ul>
                	<li><span>Current Login:</span> Mon 22 Sep 2014 03:28 PM</li>
                    <li class="last"><span>Last Login:</span> Sun 21 Sep 2014 02:28 PM</li>
                </ul>
            </div>
        </aside>
    </div>
</header>

Controller 如下

package controllers

import (
	"fmt"
	"github.com/astaxie/beego"
)

type MainController struct {
	beego.Controller
}

func (c *MainController) Get() {
	c.TplNames = "login.html"
	fmt.Println("login Get Method")
}

type LoginController struct {
	beego.Controller
}

func (c *LoginController) Post() {
	c.TplNames = "commonDashboard.html"
	fmt.Println("this is dashboard")
	password := c.Input().Get("userPassword")
	username := c.GetSession("userName").(string)
	c.SetSession("userName", username)
	c.Data["user"] = username
	fmt.Println("password:" + " " + password)
}

type HeaderController struct {
	beego.Controller
}

func (c *HeaderController) Get() {
	fmt.Println("this is Header")
	username := c.Input().Get("userName")
	fmt.Println(username)
	c.TplNames = "commonHeader.html"
}

type FooterController struct {
	beego.Controller
}

func (c *FooterController) Get() {
	fmt.Println("this is footer")
	c.TplNames = "commonFooter.html"
}

type MenuController struct {
	beego.Controller
}

func (c *MenuController) Get() {
	fmt.Println("this is menu")
	c.TplNames = "commonMenu.html"
}

我想在html文件的头部显示当前登录的用户名

最佳答案

app.conf 中启用 session 支持:

sessionon = true

如果登录有效,将用户名保存到 session 中:

func (c *LoginController) Post() {
    var json JsonObject
    u := &User{}
    if err := c.ParseForm(u); err != nil {
        json = JsonObject{
            Success: false,
            Message: "Server error",
        }
    } else {
        if u.Username == "admin" && u.Password == "123456" {
            json = JsonObject{
                Success: true,
            }
            // successfully login, put the user into session, you may put just username in
            c.SetSession("User", u)
        } else {
            json = JsonObject{
                Success: false,
                Message: "Incorrect username or password",
            }
        }
    }
    c.Data["json"] = json
    c.ServeJson()
}

然后你可以在每个Controller中恢复用户名:

func (c *IndexController) Get() {
    // get user from session, you may get just username
    u := c.GetSession("User")
    if u == nil {
        c.Redirect("/login", 302)
    }
    // set user from session into response data
    c.Data["User"] = u
    c.TplNames = "index.html"
}

以模板格式在 html 上获取它:

{{ .User.username }}

你可以只使用{{ .userName }}

关于go - Beego:显示从表单输入字段中获取的登录用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30459311/

相关文章:

websocket - 如何将 SockJS 与另一个 Web 框架集成

go - 将 Sentry 与 Beego 结合使用

go - beego 找不到带有 bee run 的布局 tpl 文件

go - 有没有一种方法可以编写通用代码来查明 slice 是否包含 Go 中的特定元素?

go - 数据库已锁定(延迟行不起作用)

go - 按 slice 字段排序

angularjs - WebSharper 与 Angular

javascript - python 相当于 Meteorserver 或 Derbyjs 或 Angularjs?

http - 在golang的http请求中附加用户名和密码

HTTP ETag 和 HTTP 重定向