zoukankan      html  css  js  c++  java
  • Ant Design Pro V5 + Django Restful Framework Token认证后台实现(二)

    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的过程很简单,当然应该有更好的实现方式,暂时不知道,先这样做了,等有更好的方法再改进。

  • 相关阅读:
    oracle行转列
    JVM设置空间大小
    Spring AOP 业务权限管理
    清晨漫步
    pull解析xml(android)
    今昔何昔
    Spring: Document root element "beans", must match DOCTYPE root "null
    xfire
    心之所向
    Oracle数据库连接
  • 原文地址:https://www.cnblogs.com/Farseer1215/p/14194365.html
Copyright © 2011-2022 走看看