英文:
Beego:Display logged in username taken from input field of form
问题
我正在使用Beego框架,我有两个HTML视图文件,一个是登录页面(login.html),另一个是主页(landing.html)。
login.html的代码如下:
<form action="/commonDashboard" name="loginForm" method="post" autocomplete="off" id="loginForm">
<input type="text" placeholder="请输入用户名" id="userName" name="userName" taborder="1">
<input type="password" class="qwerty" placeholder="请输入密码" id="userPassword" name="userPassword" taborder="2">
<input type="button" value="登录" onclick="validatelogin();" taborder="3">
<input type="button" value="清除" onclick="resetForm();" taborder="3">
<span class="forgot"><a href="#">忘记密码?</a></span>
<!-- 虚拟键盘 -->
<span class="virtual"><a href="#" id="passwd" class="tooltip-tipsy" title="点击打开虚拟键盘">虚拟键盘</a></span>
</form>
landing.html的代码如下:
<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"> 你好 <a href="#">Shri</a></li>
<li class="logout"><a href="/login">退出</a></li>
<li><a href="#">联系人</a></li>
<li class="last"><a href="#">帮助</a></li>
</ul>
</div>
<div class="login-time">
<ul>
<li><span>当前登录:</span> Mon 22 Sep 2014 03:28 PM</li>
<li class="last"><span>上次登录:</span> Sun 21 Sep 2014 02:28 PM</li>
</ul>
</div>
</aside>
</div>
</header>
控制器的代码如下:
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文件的页眉(header)中显示当前登录的用户名。
英文:
I am using Beego framework for my purpose and i have two html view files one is login and other is landing
login.html
<!-- begin snippet: js hide: false -->
<!-- language: lang-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>
<!-- end snippet -->
and landing page is
<!-- begin snippet: js hide: false -->
<!-- language: lang-html -->
<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>
<!-- end snippet -->
and controller is as follows
<!-- begin snippet: js hide: false -->
<!-- language: lang-html -->
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"
}
<!-- end snippet -->
i want to display the currently logged in username in header of html file
答案1
得分: 1
在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: "服务器错误",
}
} else {
if u.Username == "admin" && u.Password == "123456" {
json = JsonObject{
Success: true,
}
// 登录成功,将用户放入session中,你可以只放入用户名
c.SetSession("User", u)
} else {
json = JsonObject{
Success: false,
Message: "用户名或密码不正确",
}
}
}
c.Data["json"] = json
c.ServeJson()
}
然后你可以在每个Controller
中获取用户名:
func (c *IndexController) Get() {
// 从session中获取用户,你可以只获取用户名
u := c.GetSession("User")
if u == nil {
c.Redirect("/login", 302)
}
// 将session中的用户设置到响应数据中
c.Data["User"] = u
c.TplNames = "index.html"
}
在模板中以模板格式获取它:
{{ .User.username }}
你也可以只使用{{ .userName }}
。
英文:
Enable session support in app.conf
with:
sessionon = true
Save the username into session if login is valid:
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()
}
Then you can recover the username in every 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"
}
Get it on the html with template format:
{{ .User.username }}
You can just use {{ .userName }}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论