惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
News and Events Feed by Topic
D
Docker
云风的 BLOG
云风的 BLOG
F
Fortinet All Blogs
F
Full Disclosure
H
Hackread – Cybersecurity News, Data Breaches, AI and More
P
Proofpoint News Feed
Microsoft Azure Blog
Microsoft Azure Blog
WordPress大学
WordPress大学
The GitHub Blog
The GitHub Blog
L
LangChain Blog
H
Help Net Security
B
Blog
T
Tailwind CSS Blog
V
V2EX
博客园_首页
阮一峰的网络日志
阮一峰的网络日志
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
Recent Announcements
Recent Announcements
aimingoo的专栏
aimingoo的专栏
美团技术团队
A
About on SuperTechFans
C
Cybersecurity and Infrastructure Security Agency CISA
K
Kaspersky official blog
I
InfoQ
Project Zero
Project Zero
I
Intezer
Google DeepMind News
Google DeepMind News
博客园 - 【当耐特】
Hugging Face - Blog
Hugging Face - Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
Threat Research - Cisco Blogs
Last Week in AI
Last Week in AI
C
Cyber Attacks, Cyber Crime and Cyber Security
G
GRAHAM CLULEY
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
AWS News Blog
AWS News Blog
Spread Privacy
Spread Privacy
S
Securelist
Recorded Future
Recorded Future
D
Darknet – Hacking Tools, Hacker News & Cyber Security
博客园 - 叶小钗
S
Security Affairs
Blog — PlanetScale
Blog — PlanetScale
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
月光博客
月光博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
罗磊的独立博客
The Hacker News
The Hacker News

博客园 - 佛西亚

https访问 asp.net Core上传文件 .NET Framework 4.0 DLL注册GAC 使用iText 7读取PDF文件中的文本和图片 用SQL Server Profiler跟踪AX执行的SQL语句 D365升级包 Ant Design Pro V5 + Django Restful Framework Token认证前台实现 Ant Design Pro V5 + Django Restful Framework Token认证后台实现(一) D365 FO产生随机字符串 D365 FO Array增加排序 D365 FO无法命中断点 Ant Design Pro V5 开发时使用后台服务数据 JavaScript跨域访问 同步数据库报错 DataEntity增加关联DataSource Java通过代理上传文件到Azure blob 使用iText7操作PDF D365 FO Json序列化和反序列化 D365 FO操作Azure Blob
Ant Design Pro V5 + Django Restful Framework Token认证后台实现(二)
佛西亚 · 2020-12-26 · via 博客园 - 佛西亚

Python,Django,Django Restful framework和Django Restful framework Simple-JWT的安装和配置官方教程和各种文章很多,这里就不记录了。
1.Setting设置
Simple-JWT的设置在官方的教程里也有详细的描述,这里赋复制粘贴一下。

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES':(
        'rest_framework.permissions.IsAuthenticated',
    ),
    'DEFAULT_AUTHENTICATION_CLASSES':(
        'rest_framework_simplejwt.authentication.JWTAuthentication',        
    ),    
}
DEFAULT_AUTHENTICATION_CLASSES指定用simplejwt进行Token认证。

2.创建登陆方法
DRF(Django Restful Framework)有不同类型的view向外提供接口,比如function-base view,class-based view(APIView),generic-view,不同的view不同的封装层次,带来便利性的同时会损失一些灵活性。
可以结合不同的场景使用,具体的用法也没太仔细研究,暂时感觉APIView用起来更顺手,其他的view等做到后续需求再研究。
登陆成功或者失败都需要返回信息给前端,这样就涉及到序列化的操作。
需要创建一个Serializer类。

class LoginSerializer(serializers.Serializer):
    status = serializers.CharField()    
    token = serializers.CharField() 

结合ADPV5(Ant Design Pro V5)的要求,返回状态和token,方便验证登陆状态,如果验证成功,返回token,ADPV5保存起来,后续请求把token带上通过验证。
登陆方法

class UserLoginView(APIView):
    authentication_classes  = []
    permission_classes = []
    def post(self, request, *args, **kwargs):        
        loginEntity = LoginEntity()        
        user = authenticate(username = request.data["username"], password = request.data["password"])
        if user:
            token = self.getToken(user)
            loginEntity.token = token.access_token                
            loginEntity.status = "ok"
        else:
            loginEntity.status = "no"

        serializer = LoginSerializer(loginEntity)
        return JsonResponse(serializer.data)

    def getToken(self, user):       
        token = RefreshToken.for_user(user)      
        return token

登陆的界面不需要验证权限,所以将权限验证设为空,这样就不会进行Token的验证了。
验证前端传过来的用户名和密码是否正确,如果正确通过getToken获取token,然后返回给前端。
3.关联url
在urlPatterns中添加登陆的url和View的关联关系,这里用的url跟ADPV5要求的保持一致,省得转换了。

urlpatterns = [  
    url(r'^api/login/account', UserLoginView.as_view()),  
]

4.用Postman进行调用测试

DRF后台实现登陆并返回JWT的过程很简单,当然应该有更好的实现方式,暂时不知道,先这样做了,等有更好的方法再改进。