anwsion问答系统研究笔记

anwsion问答系统研究笔记

 

anwsion

/app/文件夹下是action
   所有action类都继承/system/中的基类AWS_CONTROLLER
/models/文件夹下是models
   models的基类是AWS_MODEL
/views/文件夹下是模板
框架核心代码在/system/中

工具类
helper H 在 /system/class/

常用的方法类放在 /system/functions.inc.php
 

用户登录实现
action — account/ajax/login_process/  login_process_action
model —ucenter login
model —account check_login

用户登录加密方法 $password = md5(md5($password) . $salt);

登录的过程,先检测ucenter是否登录,如果没有再检测account是否登录

用户登录后model有两个动作 update_user_last_login 和  setcookie_logout, setcookie_login

update_user_last_login用来更新最后的登录时间和最后的登录ip
 setcookie_logout 清理老的cookie  _user_login

 

然后 setcookie_login 记录登录的cookie 参数分别为 uid username password salt 过期时间
setcookie_login方法 创建cookie _user_login  值用方法 get_login_cookie_hash加密 参数分别为username password salt uid

get_login_cookie_hash的过程是 ,先加给密码加盐加密密码compile_password ($password = md5(md5($password) . $salt);),再加

密整个数组encode_hash  ,其中encode_hash用到了一个key ,解密时会用这个key解密

 

如果勾选了自动登录 则登录信息的cookie过期时间是 1年  如果没有勾选则默认保存cookie
系统自动检测cookie 若cookie存在则生成seession

记住用户名的cookie是30天

有必要的话 会记住用户名的cookie 为r_uname  30天

—-用户退出动作
执行两个动作  /app/account/main.php 的logout_action

         $this->model(‘online’)->logout(); // 在线列表退出
  $this->model(‘account’)->setcookie_logout(); // 清除 COOKIE
  $this->model(‘account’)->setsession_logout(); // 清除 Session

如果是管理员,管理员账号退出 $this->model(‘account’)->admin_logout();

 

用户注册过程研究 ,如何生成盐
——————————————–
account/ajax/register_process/ 
注册过程中
未通过检测 则system/core目录下的captcha类的方法 core_captcha::clear();  刷新注册吗

之后 model 的account  的方法user_register进行注册  ,其中user_register中 调用方法insert_user  ,insert_user 包含盐的生成

insert_user方法 ,先插入数据到users表 然后是插入users_attrib表   插入users_email_setting表  然后是更新

update_notification_setting_fields ,即插入表users_notification_setting  然后调用model search index 执行器方法push_index(

实际上就是更新users表中的字段user_name_fulltext )
如果注册成功 则清除cookie setcookie_logout(); 清除session setsession_logout();

设置setcookie_login

 

研究修改密码的过程
———————————————-

模板/account/setting/security/
action account/ajax/modify_password/  modify_password_action
更新用户数据user_edit

转载于:https://my.oschina.net/lilugirl2005/blog/116126

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/110183.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python3 安装selenium和谷歌浏览器驱动

    python3 安装selenium和谷歌浏览器驱动1、安装浏览器驱动谷歌浏览器驱动下载地址:https://chromedriver.storage.proxy.ustclug.org/index.html需要翻墙。选择和自己浏览器版本一致的版本,下载之后解压得到一个chromedriver.exe文件,放在python安装目录下,也就是和python.exe放在一起。2、安装selenium:执行pip3installselenium即可。3、测试代码fromseleniumimportwebdriverdriver=we

    2022年6月1日
    31
  • phpstorm激活服务器【2022免费激活】

    (phpstorm激活服务器)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html1TCF2R91JZ-eyJsaWNlbnNlSW…

    2022年3月31日
    240
  • 查询数据库数据量特别大时,怎么防止jvm溢出

    查询数据库数据量特别大时,怎么防止jvm溢出查询数据库数据量特别大时,怎么防止jvm溢出

    2022年4月23日
    57
  • python中用turtle画一个圆形(pythonturtle教程)

    最近发现一个很有意思的画图的python库,叫做turtle,这里先说下用turtle这个库来实现用正方形画圆的思路。每次都用乌龟(turtle)来画出一个正方形,然后通过旋转3°后,继续画一样的正方形,在通过120次循环后就实现了完整的圆,这里当然也可以用其他的角度和次数,只要能完成360度就可以了。先看完成的图形和代码。代码如下:importturtlewindow=turtle.Scr…

    2022年4月14日
    349
  • java 加载.ftl_如果加载jar里面的ftl文件

    java 加载.ftl_如果加载jar里面的ftl文件我将ftl及一些基础类打成了一个java,用maven的方式依赖,结果调用的时候调用不了jar中的ftl文件,找的还是调用方的地址去找ftl文件2019-07-0512:10:00,086[FailProcessor][WARN]Error@/manage/login:java.lang.RuntimeException:freemarker.template.TemplateNotF…

    2022年6月18日
    65
  • Java培训机构排名前十_ui培训机构

    Java培训机构排名前十_ui培训机构02JVM线程JVM内存区域JVM运行时内存垃圾回收与算法JAVA四种引用类型GC分代收集算法VS分区收集算法GC垃圾收集器JAVAIO/NIOJVM类加载器03JAVA集合接口继承关系和实现LISTSETMAP04JAVA多线程并发JAVA并发知识库JAVA线程实现/创建方式4种线程池线程生命周期(状态)终止线程4种方式sleep与wait区别start与run区别JAVA后台线程JAVA锁线程基本方法线程上下文切换同步锁与死

    2022年10月3日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号