向Django认证Unifi WiFi客人。

django-unifi-portal的Python项目详细描述


![预览](logo django unifi.png)


django unifi portal是一个基于两种身份验证/注册机制的自定义门户:
-**

这是一款功能强大、可重复使用的django应用程序,可与Unifi AP控制器软件(第4版和第5版)进行交互。

Unifi®AP是部署高性能无线网络的理想接入点。[此处](https://www.ubnt.com/unifi/unifi-ap/)您可以找到更多详细信息。

![预览](screen/login_reg.png)

工作
--


当来宾尝试在启用来宾策略的情况下连接到无线网络时,http请求将重定向到django门户服务器。

提交表单或验证facebook登录时,django验证用户,然后使用unifi授权来宾mac地址的api。

quick start
----


-在python环境中设置django unifi portal应用程序:




$pip安装django unifi portal


-迁移django unifi portal应用程序以创建用户型号:


$migrate django_unifi_portal

-将"django_unifi_portal"添加到已安装的应用程序:

``python


installed_apps=(
…,
'django_unifi portal',

`````

-复制此配置并将其粘贴到名为unifi_settings.py的文件上。py:

`` python
来自django.core.urlsolvers导入reverse_lazy


unifi installed_apps=[
material apps
"material"、
"oauth2_provider"、
"social_django",
"rest_framework_social_oauth2",
"django_unifi_门户",
]

unifi_login_redirect_url=reverse_lazy('index')

'material.frontend.context_processors.modules',
"social_django.context_processors.backends",
"social_django.context_processors.login_redirect",
"django_unifi_portal.context_processor.unifi_context"
]


unifi模板内置项="material.templatetags.material_form"


其他身份验证提供商(如google、openid等)

#facebook oauth2
"社交核心.backends.facebook.facebook appoauth2",
"社交核心.backends.facebook.facebook oauth2",

"django
"django.contrib.auth.backends.modelbackend",



unifi social身份验证管道=(
"social_core.pipeline.social_auth.social_details"、
"social_core.pipeline.social_auth.social_uid"、
"social_core.pipeline.social_auth.auth_allowed"、
"django_unifi_portal.pipeline.manage_auth_already_associated",
"社交核心.pipeline.social身份验证.social用户",
"社交核心.pipeline.user.get_用户名",
"django_unifi_portal.pipeline.require_email",
"社交核心.pipeline.mail.mail_validation",
"社交核心.pipeline.user.create_user",
"社交核心.管道.社交身份验证.关联用户",
"社交核心.管道.调试.调试",
"社交核心.管道.社交身份验证.加载额外数据",
"社交核心.管道.用户.用户详细信息",
"django统一门户.管道.用户详细信息",
'django_unifi_portal.pipeline.save_profile',
'social_core.pipeline.debug.debug',



#定义social_auth_facebook_scope以从facebook获取额外权限。
默认情况下不发送电子邮件,若要获取此权限,必须请求电子邮件权限:
social_auth_facebook_scope=['email']
social_auth_facebook profile_extra_params={
"字段":"id,name,关于,电子邮件,生日,性别,家乡,语言'
}


unifi-server=<;您的unifi-server ip>;
unifi-port=<;您的unifi-server-port>;#默认值为8443
unifi_version='v4'
unifi站点ID='default'

静态文件夹下到徽标png>;'

unifi-user="<;您的unifi用户名"
unifi-password="<;您的unifi密码"
unifi-timeout\u minutes=<;minutes>;#例如,8小时是480小时

facebook配置
社交认证facebook key="<;您的facebook key>;"
社交认证facebook secret="<;您的facebook api secret>;"
```

- Then add this configuration to your settings.py:
```python
#################################################
# UNIFI CONFIGURATION #
#################################################
from unifi_settings 导入*

installed_apps+=unifi_installed_apps

login_url=unifi login_url
login_redirect_url=unifi login_redirect_url

templates[0]['options']['context_processors']+=unifi template_context_processors

表单模板
请尝试:
从django.template.base import add掼u to掼u内置模板的快捷方式
从django.template.base import add掼u to掼u内置模板(unifi掼u template掼u内置模板)添加掼u to掼u内置模板
除了importerror之外:
"
"django 1.9.unifi模板内置,
]


authentication_backends=unifi_authentication_backends
social_auth_pipeline=unifi social_auth_pipeline
```

-您需要将视图映射到url.py中的url文件:

`` python
url(r',include('django_unifi_portal.url'),
```



-如果需要,可以使用基本unifiuser模型,或者扩展它来定义这样一个简单的模型:

```python
from unifiu portal.models import unifiuser
类customunifiuser(unifiuser):
nick=models.charfield(max_length=100)

——


最后,设置unifi以指向django门户al server的IP。您可以通过在数据库中插入虚拟帐户来测试身份验证。

![配置](screen/unifi-dash.png)

您可以修改默认的apache2 index.html文件以重定向到适当的路径,或者创建指向guest/s/default/index.php文件的符号链接。

\contribution


contributions welcome;请提交针对主分支的所有请求。如果pull请求包含python补丁或特性,则应包含相关的单元测试。
谢谢!

有关详细信息,请参阅许可证文件。

\disclaimer
ubiquiti不支持此代码。它只是作为一个基本的、运行正常的外部门户的示例提供的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
枚举Java如何设计自己的类型?   java Dagger2找不到带注释的方法   Java 8的模式匹配接口显示编译器警告   java创建intellij 15的可移植版本   java Spring STS 3.6.1和Gradle插件   java不支持列表。删除()或列表。removeAll()释放内存使用率?   java是所有静态方法还是单个实例?   java当我们在没有sparql的情况下使用jena时,如何在RDF中检索对象的值?   java如何使用底部导航视图引用片段和活动?   在tomcat中运行jsp文件时出现java错误?   java Android使用GoogleAppClient获取用户位置纬度和经度   java如何正确地重用在其他功能类中编写的方法?   hadoop HBase java。木卫一。java客户端放置记录时的EOFEException