トークンベースの認証restframeworkう

  ウェブサイトのホームページがトークンまたは他の認証であることが必要に通常の状況下では、あなたは、ログインせずにホームページの内容を表示することができず、ユーザーはユーザー名とパスワードを入力し、成功を検証した後、背景はと、トークンを返します。ホームページまたは、認証が成功すると、ユーザー認証のための他のページへの次の訪問のために訪問することができます。

1、ユーザーがアクセストークン

ユーザーは、バックグラウンドのAPIとアクセストークンを検証するためのユーザー名とパスワードを送信します。

方法:{ 

      loginSubmit(formNameフォーム){ 
        この。$、参考文献[フォーム名] .validate()(有効な非同期は、=> {
           IFは、(有効){ 
            CONST RESを待つ= この $ http.post( 'ログイン' ,. この.FORM)。
            データ{CONST、メタ:{メッセージ、コード}} = res.data;
             IF(コード2000 === ){ 

              // トークン取得、のlocalStorageに格納されたトークン値 
              localStorage.setItem( 'トークン' 、data.token)。

              // 認証が成功した後、メインページに直接ジャンプ
              この $のrouter.push({。名前:「ホーム」});
               // 成功したログインプロンプト
              この。$のmessage.success(メッセージ)
            } {
               この$のmessage.warning(メッセージ)。
            } 

          } {
             この $のmessage.warning( "ユーザー名またはパスワードが空白ではありません。" 
          } 
        }); 
      } 
    }、

2、背景の検証

クラスLoginView(APIView):
    authentication_classes = []  ページの無着陸、グローバルコンフィギュレーションの残りの部分はあり

    DEF POST(自己、要求、* argsを、** kwargsから):

        RET = {
             " データ" :{}、
             " メタ" : {
                 " コード":2001 " メッセージ"" ユーザ名またはパスワードエラー" 
            } 
        } 
        USER_OBJ = json.loads(STR(request._request.body、エンコーディング= ' UTF8 '))
        ユーザー名 = user_obj.get(' ユーザ名' 
        パスワード = user_obj.get(' パスワード' IFのユーザー名パスワード:
            OBJ = UserInfo.objects.filter(
                ユーザ名 =ユーザ名、パスワード= パスワード)1次回()
             IF OBJ:

                トークン = get_md5(ユーザー名)
                 自動的に作成しない場合は、データベースをチェックするために行く、またはトークン更新 
                UserToken.objects.update_or_createを(ユーザー= OBJ、デフォルト= { トークントークン})
  
                RET [ " データ" ] [ " ユーザ名" ] = ユーザ名
                RET [ " データ" ] [ " パスワード" ] = パスワード
                RET [ " データ" ] [ " トークン" =] トークン

                [RET " メタ" ] [ " コード" ] = 2000 
                RET [ " メタ"] [ " メッセージ" ] = " 登陆成功
            渡し
        、他パス
        を返すのHttpResponseを(json.dumps(RET、ensure_ascii =偽))

 

おすすめ

転載: www.cnblogs.com/shenjianping/p/11448160.html