云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

轻量服务器_如何把网站放到服务器上_价格

小七 141 0

Django公司django3.0简介-构建、验证和部署-第2部分学习如何使用Auth0保护Django web应用程序

DR:在本文中,我们将使用Auth0将身份验证添加到Django项目中,然后使用Heroku免费将其部署到公共URL上。本文是本系列文章的第二部分,我们可以在这里找到第一部分。接下来,从第1部分派生并克隆这个GitHub repo。现在让我们开始使用Auth0向应用程序添加身份验证层。身份验证0在本节中,我们将首先创建Auth0应用程序并设置应用程序的回调url。按照以下步骤在Auth0中设置帐户。如果您想知道回调url是什么,那么它们是Auth0在用户身份验证过程之后调用的普通url。Auth0重定向回此URL并向其附加附加附加参数,包括将交换为id_令牌、access_令牌和refresh_令牌的访问代码。"回调URL是Auth0在身份验证过程后调用的URL。"在推特上留言在Auth0中创建应用程序通过在这里注册一个免费帐户来创建一个新帐户。如果您已经有一个帐户,您可以继续使用您自己的帐户。接下来,转到Auth0仪表板并单击"+创建应用程序"按钮。命名应用程序,然后选择"常规Web应用程序"。完成后,单击"创建"。创建应用程序后,单击"设置"选项卡并向下滚动并设置允许的回调URL和允许的注销URL,如下所示:允许的回调URL::8000/完成/授权0/允许的注销URL::8000个它们定义了Auth0仪表板中登录和注销的路由。单击页面底部的"保存更改"以保存这些更改。在下一节中,我们将验证0和其他必要的包来配置应用程序。配置我们的应用程序我们应该克隆这个GitHub repo,从第1部分停止的地方开始。如果还没有做到这一点,现在就做。我们将以这次回购为基础。在您选择的文本编辑器中打开代码。现在是时候配置我们的应用程序了。我们将安装以下依赖项作为主要步骤:社交认证应用django~=3.1python-jose~=3.0python dotenv~=0.9为此,请在应用程序的终端或命令提示符中使用以下命令:pip install social auth app django~=3.1 python jose~=3.0 python dotenv~=0.9现在让我们在codeshare文件夹中创建一个新应用:蟒蛇3管理.pystartapp auth0login请确保在gadjango python/codeshare中安装以下应用程序,即social\u django和auth0login/设置.py文件:#ga django python/代码共享/设置.py已安装的应用程序=['django.contrib.admin','django.contrib.auth公司','django.contrib.contenttypes','django.contrib.sessions公司','django.contrib.messages','django.contrib.staticfiles',"核心","社会化的安江戈",'auth0login',]好吧!这些都是我们认证所需的软件包和应用程序。在下一步中,我们将添加Auth0安全密钥。设置.env来保护密钥为了在本地系统中设置Auth0应用程序与应用程序之间的通信,我们将添加一些密钥。为了确保这些密钥是安全的和隐藏的,我们将创建一个.env文件并导出到我们的应用程序。我们需要添加到应用程序中的密钥是,社会验证域社交验证密钥社会授权秘密我们可以从Auth0仪表板中的应用程序设置获取此信息。在这里,我们的核心文件是把密钥和设置保存在文件中。为此,首先,我们必须创建一个名为.env的文件,然后导出变量,如下所示:export SOCIAL_AUTH_AUTH0_DOMAIN="此处为您的AUTH0域"export SOCIAL_AUTH_AUTH0_KEY="此处为您的AUTH0客户端ID"export SOCIAL_AUTH_AUTH0_SECRET="此处为您的AUTH0客户端机密"接下来,在我们的代码共享中/设置.py文件,我们需要配置.env文件的位置。我们将使用前面安装的名为dotenv的包的帮助,并从.env文件导入密钥。在任何地方设置.py文件,如下所示:#ga django python/代码共享/设置.py从dotenv导入加载项目文件夹=os.path.expanduser操作系统('/Users/viharkurama/Desktop/Articles/Auth0/codeshare-2')\加载\u dotenv(os.path.join操作系统(项目文件夹,'.env'))社交身份验证域=操作系统.getenv("社会认证域名")社交密钥=操作系统.getenv("社交授权密钥")社交认证0机密=操作系统.getenv("社会授权秘密")最后,我们可以通过将.env文件添加到.gitignore文件来隐藏它。在项目的根目录下,创建.gitignore文件。有了它,我们可以保护我们的密钥,而不必将它们推送到任何公共存储库或产品中。正在设置Auth0首先,我们用应用程序在身份验证时请求的作用域设置SOCIAL_AUTH_AUTH0_作用域。#ga django python/代码共享/设置.py社交身份验证范围=['openid',"配置文件",'电子邮件']接下来,在中注册身份验证后端设置.py. 添加Auth0和ModelBackend的自定义后端,以便用户能够使用username/password方法进行身份验证和登录。下面是代码片段。#ga django python/代码共享/设置.py身份验证后端={"认证0登录名.auth0backend.Auth0","django.contrib.auth公司.后端.ModelBackend",}接下来,配置登录并重定向登录url;这些命令在登录期间将应用程序重定向到所提到的url。登录URL以auth0结尾,因为它需要与上面定义的自定义后端的name属性相匹配。#ga django python/代码共享/设置.pyLOGIN\u URL="/LOGIN/auth0"登录\u重定向\u URL="/"下面是显示新添加配置的所有代码:#ga django python/代码共享/设置.py#设置.env文件从dotenv导入加载#将以下行更新到您的路径项目文件夹=os.path.expanduser操作系统('/Users/viharkurama/Desktop/Articles/Auth0/codeshare-2')加载\u dotenv(os.path.join操作系统(项目文件夹,'.env'))社交身份验证域=操作系统.getenv("社会认证域名")社交密钥=操作系统.getenv("社交授权密钥")社交认证0机密=操作系统.getenv("社会授权秘密")#设置Auth0作用域社交身份验证范围=['openid',"配置文件",'电子邮件']#设置身份验证后端身份验证后端={"认证0登录名.auth0backend.Auth0","django.contrib.auth公司.后端.ModelBackend",}#设置登录和重定向URL登录URL="/LOGIN/auth0/"登录\u重定向\u URL="/"注意:请确保将project\u文件夹路径更新为正确的路径。现在我们已经配置了所有的身份验证变量,在下一节中,我们将编写身份验证视图。Auth0后端现在我们已经创建了一个名为auth0login的应用程序,让我们创建一个名为auth0的文件后端.py(在auth0login文件夹中)并在其中写入功能。尝试理解代码;这有助于我们的应用程序连接Auth0以启用身份验证。#ga django python/auth0login/auth0后端.py从urllib导入请求来自jose import jwt来自社会_core.backends.oauth导入BaseOAuth2类身份验证0(BaseOAuth2):"""Auth0 OAuth身份验证后端"""name="认证0"SCOPE_SEPARATOR=""ACCESS_TOKEN_METHOD="发布"重定向状态=假EXTRA_DATA=[("picture","picture"),("email","email")]定义授权url(self):return"https://"+自我设置("域")+"/授权"自访问令牌(U):return"https://"+自我设置("域")+"/oauth/token"def get_user_id(自身、详细信息、响应):"""返回当前用户id。"return detailsuser_id"]def get_user_详细信息(self,response):#获取JWT和密钥以验证签名标识符=响应.get("身份证")周=请求.urlopen("https://"+自我设置("域")+"/。众所周知/jwks.json文件")发卡机构="https://"+自我设置("域")+"/"观众=自我设置("密钥")#客户机ID有效载荷=jwt.解码(身份证,jwks.阅读(),算法=RS256"],观众=观众,发卡行=发卡行,)返回{"用户名":payloadnickname"],"名字":payloadname"],"picture":payloadpicture"],"user_id":payloadsub"],"email":payloademail"],}在我们的"核心"应用程序中,让我们定义登录(索引视图)和注销(注销视图)路径。另外,一定要做必要的导入。这应该是视图.py完成所需的插入和修改后归档:#ga django python/核心/视图.py从django.快捷方式导入渲染,重定向从django.views.generic导入视图从django.utils.decorators导入方法\u decorator从.模型导入帖子从django.contrib.auth公司.decorators需要导入登录名从django.contrib.auth公司将注销导入为注销从urllib.parse导入urlencode从django.conf公司导入设置从django.http导入HttpResponseDirect#在此处创建视图。定义索引(请求):用户=请求.用户如果user.is_认证:重定向("/返回代码")其他:return render(请求索引.html")def注销(请求):注销(请求)return_to=urlencode({"returnTo":request.build\u绝对\u uri("/")})logout_url="https://{}/v2/logout?客户机号={}&{}。格式(settings.SOCIAL\u AUTH_AUTH0_域, settings.SOCIAL_AUTH_AUTH0_密钥,返回到,)return HttpResponseRedirect(注销\u url)类PostListView(视图):@方法_decorator(需要登录)def分派(self,*args,**kwargs):**return-listKwas,超级调度def get(self,请求):立柱=Post.objects.all()context={"posts":posts}return render(请求主页.html",上下文)现在让我们在"templates"文件夹中创建一个名为索引.html.