如何使Django rest_framework会话认证不敏感?

时间:2016-08-24 17:10:02

标签: python django authentication django-rest-framework case-insensitive

我正在使用Django rest framework基本身份验证,代码如下:

class MyBasicAuthentication(BasicAuthentication):

    def authenticate_header(self, request):
        return 'xBasic realm="%s"' % self.www_authenticate_realm


class AuthView(APIView):
    authentication_classes = (MyBasicAuthentication,)
    serializer_class = UserSerializer

    def post(self, request, *args, **kwargs):
        user = authenticate(username=request.user.username, password=request.user.password)
        login(request, user)

        response = get_user_basic_info(request.user)

        return Response(response)

它工作正常,但我需要使此身份验证不敏感的用户名。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

如何为存储在数据库中的用户名选择所有大写或小写字符。 IE全部大写:

<header id="main">
    <div class="container-fluid">
        <div class="nav">
            <img src="images/logo.png" class="logo">        
            <ul class="left">
                <li><a href="#link">link</a></li>
                <li><a href="#link">link</a></li>
                <li><a href="#link">link</a></li>
                <li><a href="#link">link</a></li>
                <li><a href="#link">link</a></li>
            </ul>
            <div class="right">
                <div class="dropdown">
                    <button class="dropbtn">link <span class="caret"></span></button>
                    <div class="dropdown-content">
                        <a href="#">Link 1</a> 
                        <a href="#">Link 2</a> 
                        <a href="#">Link 3</a> 
                    </div>
                </div>
            </div>
        </div>
    </div>
</header>

这样输入可以是大小写混合但输出是标准化的。

答案 1 :(得分:0)

最简单的方法是标准化存储用户名的方式(大写或小写为@Upsampled回答),这意味着首先发生的身份验证不会出现问题。如果您想将所有现有用户更改为特定情况,我建议您回答https://stackoverflow.com/a/33456271