zoukankan      html  css  js  c++  java
  • Flask-login 例子

    ################################################################################

    from flask.ext.login import LoginManager, login_required, UserMixin, login_user, logout_user, current_user

    from flask import session,g

    @app.before_request

    def before_request():

        g.user = current_user

       

    app.secret_key = 's3cr3t'

    login_manager = LoginManager()

    login_manager.session_protection = 'strong'

    login_manager.login_view = 'xlogin'

    login_manager.init_app(app)

    class User(UserMixin):

        @property

        def is_authenticated(self):

            return True

        @property

        def is_actice(self):

            return True

        @property

        def is_anonymous(self):

            return False

       

        def get_id(self):

            return "100"

       

    @login_manager.user_loader

    def load_user(user_id):

        user = User()

        return user

    @app.route('/xlogin', methods=['GET', 'POST'])

    def xlogin():

      

        if g.user is not None and g.user.is_authenticated:

            return redirect(url_for('index'))

       

        form = LoginForm2()

        if form.validate_on_submit():

            flash('%s  %s  %s' %(form.username.data, form.password.data, form.remember_me.data))

            if form.username.data == "sysnap" and form.password.data == "sysnap":

                user = User()

                login_user(user)

                return redirect('/index')

        return render_template('loginform.html',

                               title='login',

                               form=form)

    @app.route('/xlogout', methods=['GET', 'POST'])

    def xlogout():

        logout_user()

        return "logout page"   

    @app.route('/xtest')

    @login_required

    def xtest():

        return "yes , you are allowed"

    form定义为

    class LoginForm2(Form):

        username = StringField('name', validators=[DataRequired()])

        password = PasswordField('password', validators=[validators.Required()])

        remember_me = BooleanField('remember', default=False)

        submit = SubmitField('Submit')

    HTML

    <!-- extend from base layout -->

    {% extends "base.html" %}

    {% block content %}

      <h1>{{title}}</h1>

      <form action="" method="post" name="loginform">

          {{ form.hidden_tag() }}

          <p>

               {{ form.username.label }} {{ form.username() }}

               {% for error in form.username.errors %}

              <span style="color: red;">[{{ error }}]</span>

          {% endfor %}

               </p>

              

          <p>

               {{ form.password.label }} {{ form.password() }}

               {% for error in form.password.errors %}

              <span style="color: red;">[{{ error }}]</span>

          {% endfor %}

               </p>

               <p>{{ form.remember_me }} remember</p>

               {% for error in form.remember_me.errors %}

              <span style="color: red;">[{{ error }}]</span>

          {% endfor %}<br>

              

               <p>

               {{ form.submit() }}

               </p>

      </form>

    {% endblock %}

  • 相关阅读:
    Tomcat控制台日志乱码
    springboot中使用poi读取Excel数据,导出数据
    Linux系统下ctrl+z挂起进程后怎么恢复
    JSONObject与String、实体类互相转换
    用xshell连接VMware中的Linux的方法步骤(2种)
    vm虚拟机的安装以及linux系统centos的装载
    mysql的安装
    IDEA中使用debug进行调试的简单介绍
    Springboot整合Mybatis
    java读取txt文件封装成对象批量插入数据库的实例
  • 原文地址:https://www.cnblogs.com/sysnap/p/6732283.html
Copyright © 2011-2022 走看看