Closed jinxu96 closed 1 year ago
$password = $request->input('password');
if (strlen($password) <= 16) {
return $this->error(__('密码错误'), \ResponseCode::LOGIN_ERROR);
}
这个判断有问题
ResponseCode 是加载的时候做的别名。 报错可以先看下错误日志
我在登陆的时候提示登陆失败,然后日志中打印出来的数据是 [2023-06-17 09:10:00] local.ERROR: larke-admin-jwt-makeToken: Object of class DateTimeImmutable could not be converted to int [2023-06-17 09:10:00] local.ERROR: larke-admin-login: JWT编码失败
如果改了app.php配置,'timezone' => 'UTC',为PRC,则会报local.ERROR: larke-admin-login: Unable to read key这个错误
我在登陆的时候提示登陆失败,然后日志中打印出来的数据是 [2023-06-17 09:10:00] local.ERROR: larke-admin-jwt-makeToken: Object of class DateTimeImmutable could not be converted to int [2023-06-17 09:10:00] local.ERROR: larke-admin-login: JWT编码失败
这个报错是jwt的库下载的版本有问题,你看下composer下载的jwt的库版本是不是最新的。 通常这个问题是用的composer源有问题,可以先换个源或者用默认源
admin的版本你下载的好像不是最新的版本,可以先确认下php版本和composer列出的admin版本是不是最新的,不是最新的就有可能出现问题
"require": {
"php": "^8.1",
"lake/larke-admin": "^1.6.3",
},
另外在composer.json文件中没有找到jwt
"require": { "php": "^8.1", "lake/larke-admin": "^1.6.3", },
另外在composer.json文件中没有找到jwt
你需要在命令行用compser命令列出包的版本看。或者先换个源重新更新拉取下,怀疑现在用的源有问题
lake/larke-admin 1.6.3 An admin api library with JWT and RBAC. lake/larke-auth 1.3.0 An authorization library that supports access control models like ACL, RBAC, ABAC in Laravel. lake/larke-jwt 1.1.6 A library to work with JSON Web Token and JSON Web Signature.
lake/larke-admin 1.6.3 An admin api library with JWT and RBAC. lake/larke-auth 1.3.0 An authorization library that supports access control models like ACL, RBAC, ABAC in Laravel. lake/larke-jwt 1.1.6 A library to work with JSON Web Token and JSON Web Signature.
那就不是最新的版本。换composer源试下
好了,得换腾讯源,要指定 composer require lake/larke-admin 1.6.9
前端页面在左侧增加菜单,需要怎么做呀
前端页面在左侧增加菜单,需要怎么做呀
手动在路由里添加,需要授权的菜单在后台授权后就会显示。 可以下载一个扩展插件,看下扩展的逻辑
前端开发可以看 vue-element-admin 文档
前端页面在左侧增加菜单,需要怎么做呀
手动在路由里添加,需要授权的菜单在后台授权后就会显示。 可以下载一个扩展插件,看下扩展的逻辑
我加加菜单,就要写一个扩展么
前端页面在左侧增加菜单,需要怎么做呀
手动在路由里添加,需要授权的菜单在后台授权后就会显示。 可以下载一个扩展插件,看下扩展的逻辑
我加加菜单,就要写一个扩展么
可以根据 vue-element-admin 文档来。用扩展是为了解藕,更新方便些
还有就是,我通过postman访问登录接口,会出现"message": "password error",通过网站登录就可以登录成功,
还有就是,我通过postman访问登录接口,会出现"message": "password error",通过网站登录就可以登录成功,
网页有用rsa加密密码的,用postman也需要加密
还有就是,我通过postman访问登录接口,会出现"message": "password error",通过网站登录就可以登录成功,
网页有用rsa加密密码的,用postman也需要加密
`//Pre-request Script //--------------以下为需要加密的内容,可以根据需求定义多个------------------// var clearText = '123456'; //对应{{rsaBody}}的明文 // var clearText = '{"arg1":"def","arg2":123,"arg3":7.89}';
//---------------------------------------------------------------------// const encrypt_key = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRHuh7yscqNGDJolwLsyAt0yAsslRi62dfKp7oIn99KCvq1jzXriimWJ1YMsNnW4fDnyX7bH+JzRsh8XNObCAFe3CWoMp0BozRnMlx3jivd5mz+koMuu49+386dog5H54cwhE+vqf756//yrSoIk4T40zV3aeE2CpKSTXPQVWJIQIDAQAB'; const forge_url = 'https://lzq1357.gitee.io/various/forge_min.js'; //forge_min.js来自:https://raw.githubusercontent.com/loveiset/RSAForPostman/master/forge.js //---------------------------------------------------------------------//
function encryptRsa(encrypt_key, clearText){ console.info('cleartext: ' + clearText); //注意此处上下的BEGIN PRIVATE KEY不要删除,框架自带的 const public_key = '-----BEGIN PUBLIC KEY-----\n'
// 第一次运行时从网络加载forgeJS,会导致请求失败 if(!pm.globals.has('forgeJS')){ console.log('request forge.js from ' + forge_url); pm.sendRequest(forge_url, function (err, res) { if (err) { console.error(err); } else { console.info("request forgs.js: Succeed, please try again"); //注意:Pre-request Script中出现报错,可能会导致pm.globals.set失效 pm.globals.set('forgeJS', res.text()); } } ); return; } eval(pm.globals.get('forgeJS'));
//------------------以下内容根据需要修改定义,可以加密多个字段------------------------// var encryptedText = encryptRsa(encrypt_key, clearText); postman.setEnvironmentVariable("rsaBody", encryptedText); //rsaBody对应Body中{{}}`我加密了,还是不行
try { // 私钥 $prikey = Cache::get($prikeyCacheKey); dd($prikey); //打印为空 // 导入私钥 $rsakey = PublicKeyLoader::load($prikey);
// RSA 解出密码
$password = $rsakey->withPadding(RSA::ENCRYPTION_PKCS1)
->decrypt($password);
私钥打印为空
try { // 私钥 $prikey = Cache::get($prikeyCacheKey); dd($prikey); //打印为空 // 导入私钥 $rsakey = PublicKeyLoader::load($prikey);
// RSA 解出密码 $password = $rsakey->withPadding(RSA::ENCRYPTION_PKCS1) ->decrypt($password);
私钥打印为空
每次点击登录都需要请求获取一次公钥,请求登录的时候在控制台查看需要带的数据
postmam测试的话,在网页端拿取access_token来直接用好些
postmam测试的话,在网页端拿取access_token来直接用好些
我试过,报token过期错误
postmam测试的话,在网页端拿取access_token来直接用好些
我试过,报token过期错误
测试把这里设置为空后再获取token来用 https://github.com/deatil/larke-admin/blob/main/src/larke/resources/config/larkeadmin.php#L61
'aud' => env('LARKE_ADMIN_JWT_AUD', ''),设置为空了,然后拿到网页端的access_token,请求头部:
prikeyCacheKey + rsa(md5(password))这是是Larke-Admin-Passkey-Id头部的值和rsa(md5(password))的值拼接是吧,我现在` try { // 私钥 $prikey = Cache::get($prikeyCacheKey);
// 导入私钥
$rsakey = PublicKeyLoader::load($prikey);
// RSA 解出密码
$password = $rsakey->withPadding(RSA::ENCRYPTION_PKCS1)
->decrypt($password);
} catch(\Exception $e) {
Log::error('larke-admin-login: ' . $e->getMessage());
return $this->error(__('密码错误'), \ResponseCode::LOGIN_ERROR);
}
$encryptPassword = AdminModel::checkPassword($adminInfo, $password);
dd($adminInfo,$password);`
这个$password打印是空的
成功了,在线rsa加密顺序不对,感谢
我在前端页面配置了路由权限,给了分组路由权限,但是访问接口,没有访问权限
我在前端页面配置了路由权限,给了分组路由权限,但是访问接口,没有访问权限
需要在页面点击 更新权限缓存 才行
我在前端页面配置了路由权限,给了分组路由权限,但是访问接口,没有访问权限
需要在页面点击 更新权限缓存 才行 好的
# 后端静态资源处理 location ^~ /vendor/ { alias /path/public/vendor/; } location ^~ /storage/ { alias /path/public/storage/; }
,部署项目的话,这个/path/public/vendor/是什么意思,是只需要换掉path就行吗,比如wwwroot/larke-admin/public/vendor/么
# 后端静态资源处理 location ^~ /vendor/ { alias /path/public/vendor/; } location ^~ /storage/ { alias /path/public/storage/; }
,部署项目的话,这个/path/public/vendor/是什么意思,是只需要换掉path就行吗,比如wwwroot/larke-admin/public/vendor/么
是的。更改path到绝对路径。laravel的安装需要把资源链接的脚本跑一次
比如自己创建了laravel项目叫test,然后composer引入你的扩展,照那个部署的话,test/public下没有vendor和srorage目录,只有test/vendor和test/storage,然后这个laravel的安装需要把资源链接的脚本跑一次是什么意思
比如自己创建了laravel项目叫test,然后composer引入你的扩展,照那个部署的话,test/public下没有vendor和srorage目录,只有test/vendor和test/storage,然后这个laravel的安装需要把资源链接的脚本跑一次是什么意思
那个文档只是示列,头像资源只用到了 srorage 这个目录。 就是需要把srorage的原始目录软链接到public目录。 那个脚本你可以看下laravel文档
我现在是www/wwwroot下有一个laravel的文件夹和前端的dist文件夹,然后我按你的配置,浏览器访问空白,几个css,js文件找不到,我看路径是对的
我现在是www/wwwroot下有一个laravel的文件夹和前端的dist文件夹,然后我按你的配置,浏览器访问空白,几个css,js文件找不到,我看路径是对的
前端的打包文件,大多都需要用代理到/根目录,api接口单独做个代理。哪些css和js不能访问?
我现在是这样的,登录页可以出来了,但是验证码刷不出来,然后我看network调的是这个http://mimeng.admin.com/stage-api/passport/passkey接口,这个接口响应200但是没有任何返回信息, http://mimeng.admin.com:9527/admin-api/passport/passkey这个是我直接拿出来访问的,是由信息返回的,然后前端.env.production和.env.dev的配置都是这个VUE_APP_BASE_API = 'http://mimeng.admin.com:9527/admin-api/',也换成过VUE_APP_BASE_API = 'http://mimeng.admin.com/admin-api/',但是都不行
我现在是这样的,登录页可以出来了,但是验证码刷不出来,然后我看network调的是这个http://mimeng.admin.com/stage-api/passport/passkey接口,这个接口响应200但是没有任何返回信息, http://mimeng.admin.com:9527/admin-api/passport/passkey这个是我直接拿出来访问的,是由信息返回的,然后前端.env.production和.env.dev的配置都是这个VUE_APP_BASE_API = 'http://mimeng.admin.com:9527/admin-api/',也换成过VUE_APP_BASE_API = 'http://mimeng.admin.com/admin-api/',但是都不行
你需要看具体的请求链接,链接直接请求没有问题,那基本就是没啥问题。主要就是看web请求了
http://admin.xiijq.cn/
,这个可以直接访问的,
编译后的base_url是stage-api吗?看起来就是这个配置有问题。前端打包部署可以先具体的看下 vue-element-admin 文档
env配置有三个,还有个staging的可以也改下,你打包的用的估计是这个env
404是nginx返回的还是php后端返回的
nginx,我拿着http://admin.xiijq.cn/admin-api/passport/captcha这个接口直接访问
看不出来是哪的问题。你可以先看下nginx的日志和laravel的日志,然后单独的放一个php文件在前端目录看能不能访问
看起来像 include /www/server/panel/vhost/rewrite/admin.xiijq.cn.conf; 这个文件的没有改到,用的这个文件的路由
这个文件我看了,里面没有内容,这个文件也要配置什么东西吗?
这个文件我看了,里面没有内容,这个文件也要配置什么东西吗?
这个文件,好像是宝塔配置伪静态的
location ~ ^/(admin-api) {
这个你在根目录加了php后没有进到api接口,那可能就是配置有问题,需要根据nginx对应的版本修改下
人都麻了,搞了两天了
location / { alias /path/dist/; try_files $uri $uri/ /index.html; }
这样写根本访问不到首页,css,js报404,只能拿出来root /path/dist/,怀疑好几个location都不生效
location / { alias /path/dist/; try_files $uri $uri/ /index.html; }
这样写根本访问不到首页,css,js报404,只能拿出来root /path/dist/,怀疑好几个location都不生效
这个需要根据nginx版本来适配更改,默认的只是适应一个大版本的nginx
larke-admin 版本
1.6.9
php 版本
php 8.1
Laravel 版本
laravel10
是否依旧存在
可以
bug描述
1.安装后,登录一直password error 2.\ResponseCode::LOGIN_ERROR,像这种,ResponseCode这个是不是扩展,我编辑器全局搜索LOGIN_ERROR,找不到
修改建议
1111111111