login登录页

在这里插入图片描述

顶部导航条:复用head组件

在这里插入图片描述

<v-head goBack="true" title="登录"></v-head>

账号密码登录表单

在这里插入图片描述
label标签不会向用户呈现任何特殊效果。不过,如果你在label标签内点击文本,就会触发此控件。就是说,当用户选择该标签时,浏览器就会自动将焦点转到和标签相关(用for关联)的表单控件上。
密码显示与隐藏由passwordVisible控制。passwordVisible默认false,密码不可见(密码输入框的type为password),展示闭眼的图标。passwordVisible为true,密码可见(密码输入框的type为text),展示睁眼的图标。点击图标可改变passwordVisible的取值(passwordVisible=!passwordVisible)从而控制闭眼睁眼的图标。

<form action="" class="login-form">
	<label class="form-label" for="username">
        <span class="label">账号</span>
        <input id="username" type="text" placeholder="请输入用户名" v-model="username">
    </label>
    <label class="form-label" for="password">
        <span class="label">密码</span>
        <!--
        passwordVisible默认false,密码不可见,文本框类型为password,反之文本框类型为text
        在password框中点击回车键,会调用login方法登录
        -->
        <input
          	id="password"
          	:type="passwordVisible?'text':'password'"
          	placeholder="请输入密码"
          	v-model="password"
          	@keyup.enter="login">
		<!--passwordVisible默认false,密码不可见,展示闭眼的图标,点击后改变passwordVisible的取值,从而控制闭眼睁眼的图标-->
        <span @click="changeVisible">
          	<!--闭眼的图标-->
          	<i class="iconfont icon" v-if="!passwordVisible">&#xe60a;</i>
          	<!--睁眼的图标-->
          	<i class="iconfont icon" v-else>&#xe6d0;</i>
        </span>
	</label>
    <!--点击登录按钮后,使用.prevent组织表单原生的登录操作,而是调用login方法-->
    <div class="button" @click.prevent="login();">
        <span>登录</span>
    </div>
    <span class="tip">未注册直接输入账号密码,自动注册!</span>
</form>
<script>
	changeVisible() {
        this.passwordVisible = !this.passwordVisible;
    }
</script>

在password框中点击回车键以及点击登录按钮,都会调用login()登录。login()先去判断用户名和密码是否为空,为空则弹出提示消息,不为空则调用异步login()登录,异步login()发送post请求调用后端的userLogin方法。userLogin先从请求体中获取username和password,对password进行md5加密,然后去数据库中查找这个用户名:

  1. 因为前端没有写注册功能,所以这里如果用户输入的账号名是不存在的,就创建一个新的账号:用户名、密码(MD5加密后的)、用户id(用户在数据库的id)、头像(默认)。将这个新账号保存在数据库中。 然后给请求信息设置session(session为用户id)并返回给前端:{status: 200,success: '注册用户并登录成功'}
  2. 如果数据库中用户的密码与现在用户输入的密码一致,注意这两个密码都是MD5加密后的,表示用户输入的账号存在并且密码正确,给请求信息设置session(session为用户id)并返回给前端:{status: 200,success: '登录成功',username: user.username,//用户名 avatar: user.avatar//用户头像}
  3. 否则的话返回给前端:{status: -1,message: '该用户已存在,密码输入错误'}

前端收到返回信息后,若返回信息的status为200,表示注册成功/登录成功,将用户名保存在cookie中并返回上一页。否则弹出错误消息:密码错误。

login() {
	if (!this.username) {
          this.alertText = '用户名输入不合法';
          this.showTip = true;
          return;
        } else if (!this.password) {
          this.alertText = '密码不能为空';
          this.showTip = true;
          return;
        }
	login({username: this.username, password: this.password}).then((response) => {
        if (response.data.status === 200) {// 注册成功/登录成功
            setInfo(this.username);// 将用户名保存在cookie中
            this.$router.go(-1);// 返回上一页
        } else {// 否则弹出错误消息:密码错误
            this.alertText = response.data.message;
            this.showTip = true;
        }
	});
}
      
login = (data) => {
	let req = {data,url: 'admin/user_login'}
  	return _post(req);
}
function setInfo(username) {
  return vue.$cookies.set(userInfo, username)
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flask-Login是一个Flask扩展,它提供了用户会话管理,包括登录、注销、记住会话等功能。在Flask应用程序中使用Flask-Login可以很容易地实现用户认证和授权。 关于Flask-Login登录页面,一般来说,你需要创建一个登录表单,然后在视图函数中处理表单提交的数据。具体步骤如下: 1. 创建登录表单,可以使用Flask-WTF扩展来实现表单验证和CSRF保护。 2. 在视图函数中处理表单提交的数据,如果表单验证通过,则使用Flask-Login提供的login_user函数将用户登录状态保存到会话中。 3. 在模板中显示登录表单,并提供注销按钮。 下面是一个简单的示例代码: ```python from flask import Flask, render_template, redirect, url_for, request from flask_login import LoginManager, login_user, logout_user, login_required, UserMixin app = Flask(__name__) app.config['SECRET_KEY'] = 'your_secret_key_here' login_manager = LoginManager() login_manager.init_app(app) class User(UserMixin): def __init__(self, id): self.id = id @login_manager.user_loader def load_user(user_id): return User(user_id) @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': user_id = request.form['user_id'] password = request.form['password'] if user_id == 'admin' and password == 'password': user = User(user_id) login_user(user) return redirect(url_for('index')) else: return render_template('login.html', error='Invalid username or password') else: return render_template('login.html') @app.route('/logout') @login_required def logout(): logout_user() return redirect(url_for('index')) @app.route('/') @login_required def index(): return render_template('index.html') if __name__ == '__main__': app.run(debug=True) ``` 在这个示例中,我们创建了一个User类来表示用户,实现了一个load_user函数来根据用户ID加载用户对象。在登录视图函数中,我们处理表单提交的数据,如果验证通过,则使用login_user函数将用户登录状态保存到会话中。在注销视图函数中,我们使用logout_user函数将用户登录状态从会话中删除。在主页视图函数中,我们使用@login_required装饰器来保护需要登录才能访问的页面。 关于Flask-Login的更多信息,你可以参考官方文档:https://flask-login.readthedocs.io/en/latest/

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值