callback({"detail":"Authentication credentials were not provided."});实现django自定义用户认证登陆

callback({"detail":"Authentication credentials were not provided."});实现django自定义用户认证登陆,第1张

登陆的时候requestsession是正常的,说明登陆模块是没什么问题,但是再请求其他api的时候requestauth是没有登陆的状态,说明你的permission_required没有通过,那么原因有两个,一个是你的session机制是没保存,每请求一次需要登陆一次(这个可能性很低),第二个(我猜主要原因是这里):你的另外一个api有设置权限控制,在视图有permission_required,然后由于上面的auth_user_id=8的用户在设置权限的时候没有赋予它权限,就是user对象的permissionsde的Queryset没有包含这个api的permission,以上是我的观点,希望有帮助

set_expiry(value): 设置cookie的有效期。可以传递不同类型的参数值:

如果值是一个整数,session将在对应的秒数后失效。例如requestsessionset_expiry(300) 将在300秒后失效

• 如果值是一个datetime或者timedelta对象, 会话将在指定的日期失效

• 如果为0,在用户关闭浏览器后失效

• 如果为None,则将使用全局会话失效策略

失效时间从上一次会话被修改的时刻开始计时。

详细参考:刘江的django教程

如果你使用is_authenticated()判断用户是否登录,那么意味着你采用了django的auth系统,

那么你的登陆最好使用djangocontribauth中的login方法,

该方法会为将user_id以及user_backend放入session中存储,

is_authenticated()通过判断session中是否有user_id 以及user_backend 来判断用户是否登陆。

如果,采用自己的登陆方法,那么有可能没将user_id 或者user_backend 放入session中保存。

所以你的user被django认为没有登录,虽然你已经登陆了。

最好的办法是利用django自己的登陆方法,结合该方法,判断用户是否登陆,从而决定用户的行为。

这个在model是做不到的,你可以看一下django的session,大概的用法如下 #保存sessionrequestsession[userid] = 1#获取sessionlogin_counter = requestsession[userid]#删除sessionrequestsession[userid]希望能够帮到你

和朋友合作一个小项目,我负责前端,他负责后台,目前对用户登陆验证这块不太明白应该怎么做。了解了下有传统session的方式和access token的方式。

access token的方式我大概明白前端的工作具体怎么做,用户名密码验证通过后后台返回一个token,以后前端路由加>

以上就是关于callback({"detail":"Authentication credentials were not provided."});实现django自定义用户认证登陆全部的内容,包括:callback({"detail":"Authentication credentials were not provided."});实现django自定义用户认证登陆、django中怎么设置单个session的失效时间、一个简单的django user.is_authenticated问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9543936.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存