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 %}

posted @ 2017-04-19 11:01  sysnap  阅读(886)  评论(0编辑  收藏  举报