Django认证登陆

创建需要的表

python3 manage.py makemigrations

python3 manage.py migrate

 

python3  manage.py createsuperuser 创建一个管理员账号

http://127.0.0.1:8000/admin/ 访问Django的用户管理系统(可以添加用户(注册))

接口

from django.contrib import auth
# 创建用户
def creatUser(request):
	from django.contrib.auth.models import User
	# 账户名唯一 否则抛异常 用try处理
	user = User.objects.create_user("rock", "rock@51reboot.com", "123456")
	user.set_password("123456")
	user.save()
	return HttpResponse('创建成功')


# 修改密码
def editpwd(request):
	from django.contrib.auth.models import User
	u = User.objects.get(username='rock')
	u.set_password('654321')
	u.save()
	return HttpResponse('密码修改成功')
        
        
def login2(request):
	# //多点登陆
	user = auth.authenticate(username="rock", password="654321")
	if user is not None:
        # 设置session在浏览器的时间
	    # request.session.set_expiry(24*60*60)
		auth.login(request,user)  # 登录写入sessionid到浏览器 ----这个会判断用户是否已经是注册了的在auth_user表
	# 	request.session['user'] = "rock2"  # 将 session 信息记录到浏览器  ----这个是设置自定义的不影响Django的认证
		response = HttpResponse('login success!')
		# 获取当前用户
		print("获取当前用户",request.user)   -----可以用这个判断用户是谁
		return response
	else:
		print(user)
		return HttpResponse('login fail!')

        

@login_required       -----//让登陆了的用户才可以访问的注解
def getIndex(request):
	if request.method == 'GET':
		#获取cookies信息
		print('获取cookie:',request.COOKIES.get('user', '获取不到参数默认我这个'))
		# 获取请求参数 ?name=123
		print(request.GET.get("name",'获取不到参数默认我这个'))
	#返回消息并写入cookie信息
	response=HttpResponse('login success!')
	response.set_cookie('user', 'test', 3600)
	return response
   

# 注销功能,清除掉cookie和session,
def log_out(request):
    auth.logout(request)  # 清除了cookie和session,清除了当前的用户,
    return HttpResponse('登出正常')
    
#----------------session的操作
# #清除所有session
request.session.clear()
##清除所有session# --数据库的也删除了
request.session.flush()
##设置自定义信息
request.session['user'] = "rock2"
# # del request.session['user']  # 删除浏览器的session
# username = request.session.get('user', '获取不到参数默认我这个')  # 读取浏览器 session       

# # session相关的知识   https://blog.csdn.net/qq_38059635/article/details/82972861

 

注册信息在 auth_user表

session在django_session表

 

如果要做单点登录,可以在 auth_user表里加上sessionkey字段,每次登陆替换用户最新的sessionkey,并把原来django_session表对应的信息删除即可

 

修改localhost:8000/admin的语言,在setting文件修改 为中文

LANGUAGE_CODE = 'zh-hans'

 

修改setting文件

LOGIN_URL="/aa/"   #@login_required 设置不可访问的函数重定向的请求路径

 

posted @ 2022-09-13 00:04  凯宾斯基  阅读(118)  评论(1编辑  收藏  举报