Guest User

Untitled

a guest
Sep 10th, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.21 KB | None | 0 0
  1. #!flask/bin/python
  2.  
  3. from flask import Flask, Response, redirect, url_for, request, session, abort
  4. from flask_login import LoginManager, UserMixin, \
  5. login_required, login_user, logout_user
  6.  
  7. app = Flask(__name__)
  8.  
  9. # config
  10. app.config.update(
  11. DEBUG = True,
  12. SECRET_KEY = 'secret_xxx'
  13. )
  14.  
  15. # flask-login
  16. login_manager = LoginManager()
  17. login_manager.init_app(app)
  18. login_manager.login_view = "login"
  19.  
  20.  
  21. # silly user model
  22. class User(UserMixin):
  23.  
  24. def __init__(self, id):
  25. self.id = id
  26. self.name = "user" + str(id)
  27. self.password = self.name + "_secret"
  28.  
  29. def __repr__(self):
  30. return "%d/%s/%s" % (self.id, self.name, self.password)
  31.  
  32. class MyUser(UserMixin):
  33. def __init__(self, id, password):
  34. self.id = id
  35. self.password = password
  36. def __repr__(self):
  37. return "%s/%s" % (self.id, self.password)
  38.  
  39.  
  40. # create some users with ids 1 to 20
  41. users = [User(id) for id in range(1, 21)]
  42.  
  43.  
  44. # some protected url
  45. @app.route('/')
  46. @login_required
  47. def home():
  48. return Response("Hello World!")
  49.  
  50.  
  51. # somewhere to login
  52. @app.route("/login", methods=["GET", "POST"])
  53. def login():
  54. if request.method == 'POST':
  55. username = request.form['username']
  56. password = request.form['password']
  57. if password == username + "_secret":
  58. id = username.split('user')[1]
  59. user = User(id)
  60. login_user(user)
  61. return redirect(request.args.get("next"))
  62. else:
  63. return abort(401)
  64. else:
  65. return Response('''
  66. <form action="" method="post">
  67. <p><input type=text name=username>
  68. <p><input type=password name=password>
  69. <p><input type=submit value=Login>
  70. </form>
  71. ''')
  72.  
  73.  
  74. # somewhere to logout
  75. @app.route("/logout")
  76. @login_required
  77. def logout():
  78. logout_user()
  79. return Response('<p>Logged out</p>')
  80.  
  81.  
  82. # handle login failed
  83. @app.errorhandler(401)
  84. def page_not_found(e):
  85. return Response('<p>Login failed</p>')
  86.  
  87.  
  88. # callback to reload the user object
  89. @login_manager.user_loader
  90. def load_user(userid):
  91. return User(userid)
  92.  
  93.  
  94. if __name__ == "__main__":
  95. app.run(host='0.0.0.0', port=5000, debug=True)
Add Comment
Please, Sign In to add comment