今天做完了实习開始到如今的唯一一个我独立完毕的系统。不过一个登录验证以及权限控制的权限管理系统。

总结一些我的这十天开发的路程。

就在上上周的周四。cto有事回家了。回家之前告诉我说。让我完毕公司的后台管理系统的权限控制部分和权限分配系统。我就当时认为这可能是我在公司项目上的一个巨   大而有非常快乐的挑战。

周五,昆大神和我整理了一下架构。告诉我说。不要着急写代码,必需要把每一步想清楚了,在写代码, 因为当时没有文档,于是几个开发就大概依据之前的工作经验,   拼出了一份“麻雀随小,五脏俱全”的文档,我周五就開始学习一些主要的东西。

项目当时没说使用什么构架,于是我选择了公司如今所有项目都使用的flask,之前我的一些统计任务使用的所有都是tornado,我个人在实习之前使用的是django, 这次使   用flask也是为了方便。也是怕出现故障,自己没有办法解决的耽误项目进度。

我确实说对了,我遇到问题了。    。

flask我之前只写过晓得demo,基本登录注冊都没有的那种,所以可想而知,有多难,可是我还是努力,开发。由于不会的地方。有些能够照抄公司的项目,有些直接找大神即可。

最先遇到问题的地方就是python的orm,sqlalchemy,这个东西,大多数的教程是英文的,我选了公司项目一样的架构去做,只是终于结果我没有选择orm体系,我选了sqlalchemy的sql体系。这个地方我在最初一路无阻,哈哈,后来仅仅有哭的份了。

第一步

先写架构,使用mvc体系。

.
├── angel
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── model
│   │   ├── authority_group.py
│   │   ├── authority.py
│   │   ├── base.py
│   │   ├── group.py
│   │   ├── __init__.py
│   │   ├── login_log.py
│   │   ├── user_group.py
│   │   └── user.py
│   └── views
│       ├── base.py
│       └── __init__.py
├── config.py
├── create_table.py
└── README.md

这个选择没有错误,

第二部。我以为我想清楚了没一个流程。我開始写代码了

刚刚開始我 先依照经典的flask的view里面每一个功能进行不同的切割。user,permssion,group,可是发如今多个文件里使用装饰器不好是,去看了公司项目,发现全部的  url都会使用,app.add_url_rule  来统一定义到application里面。这个坑,是我踩的最小的坑。

第三部。用户登录限制,

这个本来想用第三方的登录程序实现,可是最后我被大神否决,必须自己实现。由于这个里面涉及东西比較多。还必需要签名认证,而且写完之后代码必须review,这个     项目不能有漏洞。这也就仅仅能自己照这公司的项目里面的实现方式实现一下,实现机制使用了session,

可是学习django的我根本不知道什么叫做session。什么叫做cookice,这个地方的知识我恶补了好久:

跑题一下,django确实是python的第一大框架,不可否认,你仅仅要能想到的,大多数都是有集成的,你想要的功能中文文献都一大片,于是我使用django完毕了一个blog  社区,我觉的自己非常猛了。

直到使用session去控制登录时候。我才发现。我错了,我不知道session是什么?cookice是什么?使用了半天学习了session和cookice。作出了装饰器,控制登录,那天   正好公司有人来面试,我看了一眼简历,发现那个人只使用过django,cto不在,于是面试问题大家就讨论一下。我说了一句,能够问一下session的问题,就会知道结果         了。于是结局被我说中了。

第四部,权限控制

能加入用户了,能加入权限了,能加入组了。

開始给用户和组授权吧!

这些我就傻了,给用户授权的时候,我须要指明给那个用户。给他那些权限,我选了比較low的做法。

先弄一个全部用户的list出来,

点击相应的username。跳到权限页面,选中相应的权限和组。提交。这个就完毕了授权。

这个时候我问了一下,说我必须给一个外部接口。这个接口用来验证权限

这个接口不难,接口调用规则是:

须要给我一个user_id 和 action, 我返回能不能一个0或者1,这个查询我也被坑了,

如果说,给我了一个用户的id,我须要去权限表里面查看用户有没有这个权限,还要去group表里面查,看有没有这个权限。这个时候sqlalchemy sql 的麻烦就出现了,这个必须使用 in ,这一下。我找了好半天,英文文档。我也是看醉了,终于解决这个问题,花费时间半天,唉,

我以为完事了。

第五部 。自我权限控制

之前我只以为我提供一个接口,就算功能完事了(其它的要求功能已经完毕)

突然说必须用户在我自己的平台登录时候也要有权限控制,这些下我蒙了,我不知道怎么做,

我先说一下我的个人理解

我点击了这个链接。我怎么知道我点击了,我点击的动作,产生一个什么样子的action,这个action我要怎么拿到。之前的接口是提供给我了,如今是没有提供,我要怎么得到。可是这个问题。我没有想通。我找大神,大神不知道我遇到了什么问题,由于我不会描写叙述这个问题,在这里我和Fu大神讨论了好久,他听不懂我说的问题。我试着努力描写叙述。可是没有结果

最后Kun大神看不下去了。告诉我,我们三个一起讨论一下。

我開始在白板上面描写叙述我的问题,画出了我想这个事情的经过,点击行为拿到action。

最后我明确了,我自己错在哪里,

用户点击这个链接,首先链接的处理函数会去渲染这个页面,这个时候调用get方法,可是在这之前,我能

def app():

user_id = get_user_id_session()

perm = perm_user(user_id)

if not perm:

return   redirect("/permission")

return render_template("xxx.html")

简单的实现了,

我经过一番更改之后把这个变成了装饰器,简化了工作量

第六部,展示用户的权限

希望看到用户直接有的权限,和用户所在组的权限。

可是当前我的实现是将用户的权限和权限组给出来,这个权限组有什么权限还要点击,不能直接显示成为:

当前组是:xxxx

这个组有的权限是 xx,cc,app,ddd

因为对sqlalchemy sql 不熟。在这里一个sql语句坑了一下午,各种方式,我使用了dict传值,使用list。可是都达不到想要的结果。最后无奈。求Fu大神,给我写了一个使用了三个join 的sql 语句,最后在使用字典搞定格式显示

于是就到了这了。明天继续暂定还缺什么功能

总结一下:

1.開始写代码之前的时间一定要是写代码时间的三倍,否则不要开工,

2.开发文档。一定要有,只靠经验,会被自己坑了,有些功能没有开发。有些功能开发完了告诉我又不使用

3.时刻知道自己的项目进度。这个合理的把握在于,对这个东西熟悉程度。不要觉这个东西,三天就能,五天即可,看都不看文档,

4.本来使用django能够三天完毕,由于django的后台系统非常牛的,直接弄好数据结构就完事了,权限分配和控制都非常easy。这个我是想都学些东西,可是耽误了进度,这个不值了

5.继续学习sql,这个我还是太坑了

6.认真的整理一下python数据结构和装饰器,不要在被这些小的问题绊倒

7.明天开完会再

转载于:https://www.cnblogs.com/lytwajue/p/6840339.html

实习三个月的地一个完整项目总结相关推荐

  1. 如何使用graphpad做柱形图_系列文章 如何使用PaddleDetection做一个完整项目(三)...

    系列文章 如何使用PaddleDetection做一个完整项目(三) 该文章是PaddleDetection的完结篇,请参考之前两篇文章 https://zhuanlan.zhihu.com/p/10 ...

  2. 案例分享,从0到1了解一个完整项目

    产品新人进入公司,由于经验不足,通常都是负责产品部分模块,很少有机会能接触到从0到1的完整项目,对产品的全局思考会比较欠缺. 刀哥分享一个去年参与的项目,这个项目刀哥全程参与,产品经理也就是刀哥一个人 ...

  3. 一个完整项目的流程都涉及哪些内容

    最近在跟着老师学做一个有关图书馆的项目,目标是做出一个移动端的包含校内图书馆内容的图书馆.上完第一节课,梳理一下有关内容. 第一节课主要介绍了做一个完整的项目的流程都有哪些,涉及哪方面的内容,具体如下 ...

  4. 如何5分钟跑起来一个完整项目?

    今天熊哥和大家聊聊,我怎么在5分钟之内生成一个完整的项目. 效果 看看这个面板,这居然是我花了5分钟成功跑起来的项目. 竟然具备超过三十项功能.还可以直接在页面上生成代码. 它是什么?它是 go-gi ...

  5. 一个完整项目的学习--

    1.1  开发背景 ××信息科技有限公司是一家集数据通信.系统集成.电话增值服务于一体的高科技公司.公司为了扩大规模,增强企业的竞争力,决定向多元化发展,借助Internet在国内的快速发展,聚集部分 ...

  6. git 创建webpack项目_使用webpack手动创建一个完整项目的全过程

    1.创建文件夹"webpack-study" 2.使用webstrom打开文件夹所在位置.在根目录上创建一个文件,文件命名为"src",在src文件下新建css ...

  7. 一个完整项目的生命周期,不是上线就结束了

    往往在定义项目阶段时,会按照上面这个基本步骤来做计划和执行,但对于软件环境比较复杂的情况,比如:预发布环境.生产环境网络条件,安全要求都不同的时候,在考虑项目范围和计划时,要考虑到实际的实施因素. 下 ...

  8. Oracle-SQL语法基础【以一个完整项目为例】

    --log in conn / as sysdba; show user; conn /as sysdba 无需密码直接可以连接 SYS用数据库的超级用户,数据库内很多重要的东西(数据字典表.内置包. ...

  9. koa mysql_使用koa+mysql实现一个完整的项目

    前言 前端工程师开始自己的一个完整项目,从数据库到服务端再到前端,从Node开始应该是比较容易的,至于数据库是什么不需要太关心,初学的目的是完整的实现一个前后端的项目,那么无论mongodb或是mys ...

  10. react全家桶从0搭建一个完整的react项目(react-router4、redux、redux-saga)

    react全家桶从0到1(最新) 本文从零开始,逐步讲解如何用react全家桶搭建一个完整的react项目.文中针对react.webpack.babel.react-route.redux.redu ...

最新文章

  1. SSO(Single Sign-on) in Action
  2. 怎么学python-新手如何自学python课程?
  3. ----uni-app之修改头像----
  4. OS / 5 种 IO 模型
  5. 关于我在学习Javaweb时对Linux服务器安装配置jdk,tomcat,mysql的一些学习心得
  6. Windows安装Python包下载工具pip遇到的问题
  7. [蓝桥杯]2018年第九届省赛真题C/C++ B组 填空+大题
  8. [洛谷1681]最大正方形II
  9. PLSQL Developer 12 破解注册码
  10. 国内外流行的JS游戏开发框架介绍---kalrry
  11. 警惕分布式常见的这十大坑
  12. 女性内分泌失调要小心
  13. 银行数字化转型导师坚鹏:金融场景搭建与营销活动策划培训结束
  14. 外罚函数法(一):外罚函数的构造
  15. 海康威视摄像机的实时读取篇一(OpenCV开发环境配置)
  16. matlab nargin的意思
  17. arw是什么格式?arw格式用什么软件打开?arw格式怎么转换成jpg
  18. HDU2066:一个人的旅行(spfa)
  19. Python爬取股票信息
  20. 2020最新广告法_2020新广告法关于房地产

热门文章

  1. is this mysql server_mysql出现is not allowed to connect to this mysql server异常的解决办法
  2. nyoj936蚂蚁的难题(X)
  3. 职称英语职称计算机如何折算为学时,职称英语成绩可折算学时 或成考试新方向...
  4. 十大排序算法——计数排序(C语言)
  5. windows java 进程_windows下java -jar 后台运行以及杀死后台进程的操作
  6. java匿名内部类 内部类_java中的匿名内部类详细总结
  7. 如何设计实现一个证书加密签名工具包-极客大学架构师训练营(架构师 黄燧)
  8. ajax谷歌浏览器没缓存,从缓存AJAX请求会导致Chrome(Prevent Chrome from caching AJA
  9. centos 6.4 安装java_CentOS6.4 64位系统安装jdk 转载
  10. Redis Zadd 命令 Redis 有序集合(sorted set)Redis Zadd 命令用于将一个或多个成员元素及其分数值加入到有序集当中。如果某个成员已经是有序集的成员,那么更新