Python 3.x 使用Radius登录
我正在尝试设置Flask登录,其中用户数据库位于RADIUS服务器上。 我可以根据它来验证凭证,但大多数在线示例都使用SQLAlchemy。如果我没有使用自己的数据库来创建Flask,我还需要使用SQLAlchemy吗 当运行User(Mixin)类时,我遇到了错误Python 3.x 使用Radius登录,python-3.x,flask,flask-wtforms,flask-login,Python 3.x,Flask,Flask Wtforms,Flask Login,我正在尝试设置Flask登录,其中用户数据库位于RADIUS服务器上。 我可以根据它来验证凭证,但大多数在线示例都使用SQLAlchemy。如果我没有使用自己的数据库来创建Flask,我还需要使用SQLAlchemy吗 当运行User(Mixin)类时,我遇到了错误 AttributeError:'str'对象没有属性'is\u active' 我的用户类很简单,因为我不需要自己的DB,只需要文档中的4个方法 class User(UserMixin): pass 下面是一些代码,用于
AttributeError:'str'对象没有属性'is\u active'
我的用户类很简单,因为我不需要自己的DB,只需要文档中的4个方法
class User(UserMixin):
pass
下面是一些代码,用于仅使用字典作为DB来尝试此操作:
from flask import Flask, url_for, render_template, redirect
from forms import LoginForm
from flask_login import LoginManager, UserMixin, login_required, login_user
users_db = {'user1': 'pass1'}
app = Flask(__name__)
login_manager = LoginManager()
login_manager.init_app(app)
@login_manager.user_loader
def load_user(user_id):
if user_id in users_db:
print('user found in DB')
return user_id
else:
return None
class User(UserMixin):
pass
app.config['SECRET_KEY'] = 'abc123'
@app.route('/', methods=('GET', 'POST'))
def Login():
form = LoginForm()
if form.validate_on_submit():
print('validated')
username = form.username.data
login_user(username)
next = flask.request.args.get('next')
if not is_safe_url(next):
return flask.abort(400)
return flask.redirect(next or flask.url_for('hi'))
return render_template('login.html', form=form)
@app.route('/hi')
def hi():
return """<h1>Hi</h1>
{% if current_user.is_authenticated %}
Hi {{ current_user.name }}!
{% endif %}"""
@app.route('/secure')
@login_required
def secure():
return "This is a secure page."
@app.route("/logout")
@login_required
def logout():
logout_user()
return redirect('https://cisco.com')
从flask导入flask、url、呈现模板、重定向
从表单导入LoginForm
从flask_login导入LoginManager、UserMixin、login_required、login_user
users_db={'user1':'pass1'}
app=烧瓶(名称)
login\u manager=LoginManager()
登录管理器。初始化应用程序(应用程序)
@登录\u manager.user\u加载程序
def加载用户(用户id):
如果用户数据库中的用户id为:
打印('在数据库中找到用户')
返回用户id
其他:
一无所获
类用户(UserMixin):
通过
app.config['SECRET_KEY']='abc123'
@app.route('/',methods=('GET','POST'))
def Login():
form=LoginForm()
if form.validate_on_submit():
打印('已验证')
用户名=form.username.data
登录用户(用户名)
next=flask.request.args.get('next')
如果不是安全url(下一步):
返回烧瓶。中止(400)
返回flask.redirect(下一个或flask.url_表示('hi'))
返回呈现模板('login.html',form=form)
@应用程序路径(“/hi”)
def hi():
return“”你好
{%如果当前用户是经过身份验证的%}
你好{{current_user.name}}!
{%endif%}”“”
@app.route(“/secure”)
@需要登录
def secure():
return“这是一个安全页面。”
@应用程序路径(“/注销”)
@需要登录
def注销():
注销用户()
返回重定向('https://cisco.com')
这里有什么明显的错误,或者我在概念上不理解什么?
谢谢 您的用户数据库仅包含字符串。您必须创建User类的实例,并在登录时返回该实例 看 PS我在手机上,如果这是不够的信息,我会更新我的答案后 本文还介绍了登录机制
好的,我仍在试图弄清楚如何在没有所有SQL内容的情况下创建User类。我想加入UserMixin就足够了。是的!:-)但是您需要使用user类。ie
john=User()
,然后您需要将john
放入词典中。但是很明显,你的用户类需要一个id和密码属性,或者你以后想要查询的任何东西。这必须是接近的!但仍然会出现相同的错误!-->你会成功的!:-)