Django之登录权限系统
最编程
2024-07-11 06:58:32
...
本文参考链接django之auth模块(用户认证) - chchcharlie、 - 博客园 (cnblogs.com)
执行完迁移命令,会自动生成admin表,迁移命令如下:
python manage.py makemigrations
python manage.py migrate
相关模块
from django.contrib import auth # 导入auth模块,用于鉴权 from django.contrib.auth.models import User # 导入auth_user表对象,用于创建用户 from django.contrib.auth.decorators import login_required # 校验用户是否登陆的装饰器
1)注册创建用户
User.objects.create(username=username, password=password) # 创建普通用户,密码不加密(不推荐使用) User.objects.create_user(username=username, password=password) # 创建普通用户,密码加密(推荐使用) User.objects.create_superuser(username=username, password=password, email='123@qq.com') # 创建超级用户,但是必须填写邮箱事项,要不报错
举例 用户注册代码
def register_action(request):
u_name = request.GET['username']
p_word = request.GET['password']
# 开始 联通django用户表
from django.contrib.auth.models import User
try:
user = User.objects.create_user(username=u_name,password=p_word)
user.save()
return HttpResponse('注册成功!')
except:
return HttpResponse('注册失败~用户名好像已经存在了~')
2)登录验证用户
auth.authenticate(request, username=username, password=password) # 用户名密码正确返回的是用户对象,错误返回None
auth.login(request, user_obj)
# 只要执行了此代码,之后在任意可以获取到request对象的地方,都可以通过request.user获取到当前登录的用户对象
request.user.is_authenticated() # 判断是否登陆 request.user # 登陆用户对象
举例用户登录代码
def login_action(request):
u_name = request.GET['username']
p_word = request.GET['password']
# 开始 联通 django 用户库,查看用户名密码是否正确
from django.contrib import auth
user = auth.authenticate(username=u_name,password=p_word)
if user is not None:
# 进行正确的动作
auth.login(request, user) # 不写这个加了@login_required,就登录不了了,也添加了session
request.session['user'] = u_name # 这个是设置session,上面已经添加了,这个没有用
return HttpResponse('成功')
else:
# 返回前端告诉前端用户名/密码不对
return HttpResponse('失败')
3)修改密码
# 先校验旧密码是否正确 request.user.check_password(old_password) # 返回的是布尔值 # 修改密码 request.user.set_password(new_password) request.user.save() # 一定要保存
4)注销登录
auth.logout(request)
举例用户注销
# 注销
def logout(request):
from django.contrib import auth
auth.logout(request)
return HttpResponseRedirect('/login/')
5)校验用户是否登陆,未登录情况下自动跳转到自定义的登录界面
@login_required
def welcome(request):
print('进来了')
# return HttpResponse('欢迎来到主页')
return render(request,'welcome.html')
path('accounts/login/', login), # 未注册重定向
使用auth模块写一个注册、登陆、修改密码、注销登陆功能
from django.contrib import auth # 导入auth模块
from django.contrib.auth.models import User # 导入auth_user表对象
from django.contrib.auth.decorators import login_required # 校验用户是否登陆的装饰器
# 注册功能
def register(request):
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
User.objects.create_user(username=username, password=password)
return HttpResponse('注册成功!')
return render(request, 'register.html')
# 登录功能
def login(request):
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
# 数据库校验用户名和密码是否正确
user_obj = auth.authenticate(request, username=username, password=password)
# print(res) # 用户名密码正确返回的是用户对象,错误返回None
if user_obj:
# 保存用户登录状态
auth.login(request, user_obj)
return HttpResponse('登陆成功!')
return render(request, 'login.html')
# 登陆之后可以查看的页面
@login_required
def get_user(request):
print(request.user)
print(request.user.is_authenticated)
return HttpResponse('get_user页面')
# 登陆之后可以查看的页面
@login_required
def login_after01(request):
return HttpResponse('我是login_after01页面')
# 登陆之后可以查看的页面
@login_required
def login_after02(request):
return HttpResponse('我是login_after02页面')
# 登陆之后可以查看的页面
@login_required
def login_after03(request):
return HttpResponse('我是login_after03页面')
# 修改密码功能
@login_required
def set_password(request):
if request.method == 'POST':
old_password = request.POST.get('old_password')
new_password = request.POST.get('new_password')
# 先校验旧密码是否正确
is_right = request.user.check_password(old_password) # 返回的是布尔值
# 再修改密码
if is_right:
request.user.set_password(new_password)
request.user.save() # 一定要保存
return render(request, 'set_password.html')
# 注销功能
@login_required
def logout(request):
auth.logout(request)
return HttpResponse('注销成功')
推荐阅读
-
Django之登录权限系统
-
基于Django的博客系统之增加类别导航栏(六)-具体实现
-
使用 aliyun 账户登录后,系统会提示该账户没有使用通灵密码的权限。
-
实操指南:基于H3C交换机的案例 - 安全策略篇(根据源IP管控Web登录用户的权限)[电子商务系统构建连续教程]
-
企业电子招投标采购系统源码之登录页面
-
免费下载中国知网、万方学术论文的几种方法(福利合集)-方法二:图书馆访问 打开支付宝,不是转账,不是还花呗,而是免费下论文,惊不惊喜意不意外。来看看使用步骤: 打开手机支付宝,搜索「浙江图书馆」,点击关注。 选择左下角的「服务」-「我的读者证」,按操作指示办理。记住设置的密码。 返回支付宝首页,打开卡包,「读者证」到手。 首先,用刚才领取的读者证账号和自己设置的密码,登录浙江省图书馆官网(http://www.zjlib.cn)。然后,在网站右下角找到中国知网数据库,点击,根据自己的需求检索.。貌似每天登陆的人数比较多,略卡。。。 方法三:iData iData可以看做是中国知网的镜像版,网站非常简洁,也没有任何广告。 登录iData官网(https://www.cn-ki.net),点击右上角 -我的iData- 注册,点击搜索文献,按需检索,然后点击下载全文即可! 不过注册用户每天有2-5篇的*下载额度(系统自动计算),如果额度用完可以第二天再来下载。当热也可以捐助iData可获取权限码在一定时间内无限下载。 亲测上述三种方法目前较为靠谱。 学术资源,请节约合理下载利用。