学校建设网站报告书,方案设计评分标准,wordpress列表提取文章第一张图片,招聘信息最新招聘2021一、加密工具开发 首先在根目录下extend文件中创建Encipher文件夹#xff0c;用于专门开发加解密工具#xff0c;新建RSA算法控制器并命名为Encrypt.php。然后在根目录下config文件夹中创建rsa.php文件#xff0c;用于配置RSA算法参数。 1、秘钥生成算法
?php
/*** RS…一、加密工具开发 首先在根目录下extend文件中创建Encipher文件夹用于专门开发加解密工具新建RSA算法控制器并命名为Encrypt.php。然后在根目录下config文件夹中创建rsa.php文件用于配置RSA算法参数。 1、秘钥生成算法
?php
/*** RSA加密工具* User: 龙哥 三年风水* Date: 2024/10/27/0027* Time: 21:12*/
namespace Encipher;
class Encrypt
{/*** 生成公私钥文件* return string*/public static function generateRsa(){$config array(digest_alg config(rsa.digest_alg),private_key_bits config(rsa.private_key_bits),OPENSSL_KEYTYPE_RSA config(rsa.OPENSSL_KEYTYPE_RSA),);$res openssl_pkey_new($config);openssl_pkey_export($res, $private_key);$public_key openssl_pkey_get_details($res);$public_key $public_key[key];file_put_contents(public.key, $public_key);file_put_contents(private.pem, $private_key);openssl_free_key($res);return 生成成功;}
} 2、秘钥加密算法
?php
/*** RSA加密工具* User: 龙哥 三年风水* Date: 2024/10/27/0027* Time: 21:12*/
namespace Encipher;
class Encrypt
{/*** 加密算法-采用公钥加密后base64加码* param $string* return string*/public static function encryptRsa($string){$ssl_public file_get_contents(public.key);$pu_key openssl_pkey_get_public($ssl_public);//这个函数可用来判断公钥是否是可用的if (false $pu_key) return 证书错误;openssl_public_encrypt($string, $data, $pu_key);//公钥加密$data base64_encode($data);return $data;}
} 3、秘钥解密算法
?php
/*** RSA加密工具* User: 龙哥 三年风水* Date: 2024/10/27/0027* Time: 21:12*/
namespace Encipher;
class Encrypt
{/*** 解密算法-base64解码后采用私钥解密* param $string* return string*/public static function decryptRsa($string){$ssl_private file_get_contents(private.pem);$pi_key openssl_pkey_get_private($ssl_private);//这个函数可用来判断私钥是否是可用的可用返回资源id Resource idif (false $pi_key) return 证书错误;openssl_private_decrypt(base64_decode($string), $data, $pi_key);//私钥解密return $data;}
} 4、调用测试-生成公私钥 a、一定要记得添加路由在根目录下面route文件夹中的app.php文件中追加以下代码
Route::post(index/generate_rsa,Index/generateRsa); b、在根目录下app文件夹下的controller文件夹中在Index.php控制器中追加以下代码
?php
namespace app\controller;
use Encipher\Encrypt;class Index
{/*** 生成公私钥文件* return \think\response\Json*/public function generateRsa(){$res Encrypt::generateRsa();return succ($res);}
}
二、开发Base.php总控业务逻辑 我们根据以下草图可以发现Base.php是控制登录者信息及验证业务逻辑。那么本控制主要做三件事情登录后个人资料、角色、菜单 1、登录信息 a、定义系统必要参数 protected $userId 0;//用户编号,整个系统内部使用protected $avatar ;//登录用户的头像protected $username ;//登录用户的登录名称protected $realname ;//登录用户的真实名称protected $ip ;//登录用户授权组protected $departmentId 0;//登录用户部门编号protected $gradeId 0;//登录用户级别编号protected $isUnserialize true;//Redis里面有按钮权限protected $token ;//当前用户唯一编码protected $roleId ;//登录用户的权限编号protected $key ;//登录用户权限组标识protected $butts [];//操作权限,整个系统内部使用protected $rules [];//登录用户的权限组内部使用 b、根据authorization头参数解析数据并查处结果 //初始化方法public function initialize(){parent::initialize(); // TODO: Change the autogenerated stub$this-isLoginAuth();//判断是否登录}//token验证private function isLoginAuth(){$headInfo $this-request-header();if(!isset($headInfo[authorization]))return err(非法操作!);if(empty($headInfo[authorization]))return err(操作异常!);$tokenValue explode(|, Encrypt::encryptRsa($headInfo[authorization]));//解密 --转换tokenif(count($tokenValue) ! 2)return warn(登录认证权限错误);$token sha1(sha1($tokenValue[0]).strtotime($tokenValue[1]));$res Token::setToken($token, $headInfo[authorization]);if($res[status] false)return warn($res[info]);//赋值错误信息$this-userId $res[data][admin_id];$this-avatar $res[data][avatar];$this-username $res[data][username];$this-realname $res[data][realname];$this-ip $res[data][ip];$this-departmentId $res[data][department_id];$this-gradeId $res[data][grade_id];$this-roleId $res[data][role_id];$this-token $token;}
三、提前说明 明天将封装Redis工具、数据库操作工具、及角色方法、菜单方法