好吧,我刚开始使用Lumen并且我正在尝试使用Auth,但是调用Auth :: check或Auth的任何其他函数..导致以下错误 致命错误:在供应商中找不到类'Memcached'第52行的\ illuminate\cache\MemcachedConnector.php.我不想使用之前从未使用过的Memcached.
我在.env文件中禁用它并将CACHE_DRIVER和SESSION_DRIVER设置为数组,但仍然显示相同的错误.
我决定不再使用Auth并使用会话/令牌手动处理我的身份验证,但启用MiddleWare StartSession会导致相同的错误.
$app->middleware([
// 'Illuminate\Cookie\Middleware\EncryptCookies',
// 'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
'Illuminate\Session\Middleware\StartSession',
// 'Illuminate\View\Middleware\ShareErrorsFromSession',
// 'Laravel\Lumen\Http\Middleware\VerifyCsrfToken',
]);
Run Code Online (Sandbox Code Playgroud)
如果有人真的可以帮助我,我会很高兴
编辑
在框架中进行了一点深入之后,I Hard SessionManager在方法中的类中编写了会话驱动程序名称getSessionConfig
public function getSessionConfig()
{
$this->setDefaultDriver("cookie");//I added this line
return $this->app['config']['session'];
}
Run Code Online (Sandbox Code Playgroud)
它虽然有效,但不是一种好的做事方式.没有配置文件,我相信所有的配置都写在.ENV文件,但我真的不知道为什么session_driver和cache_driver默认为memecached即使在改变之后.ENV然后跑去composer dump-autoload......流明:(
编辑 这是我的.env文件
APP_ENV=local
APP_DEBUG=true
APP_KEY=SomeRandomKey!!!
APP_LOCALE=en
APP_FALLBACK_LOCALE=en
DB_CONNECTION=mysql
DB_HOST=localhost
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=
CACHE_DRIVER=array
SESSION_DRIVER=cookie
QUEUE_DRIVER=database
Run Code Online (Sandbox Code Playgroud)
我已经在我的bootsrap/app.php中取消注释了这一行
Dotenv::load(__DIR__.'/../');
Run Code Online (Sandbox Code Playgroud)
我的DataBase配置工作正常,因此.env文件加载得非常好.
我试图了解$ interval和setInterval之间的区别.我有这个测试:
Dashboard.prototype.updateTotalAppointments = function(){
//console.log();
this.appointmentsCount = this.appointmentsCount +1;
console.log(this.appointmentsCount);
};
Dashboard.prototype.start = function(){
setInterval(function(){
this.updateTotalAppointments();
}.bind(this), 3000);
}
Run Code Online (Sandbox Code Playgroud)
>
div class="hb-info-card-data-count"><h1>{{dashCtrl.appointmentsCount}}</h1></div>
Run Code Online (Sandbox Code Playgroud)
使用setInterval不会更新HTML页面上的值,但该值实际上会在浏览器控制台上更改,但它不会在Html页面上更新.
但如果我这样做:
Dashboard.prototype.start = function(){
$interval(function(){//using $interval seems to work fine
this.updateTotalAppointments();
}.bind(this), 3000);
Run Code Online (Sandbox Code Playgroud)
}
这似乎完美,所以我真的不知道为什么后者不起作用,但我真的很想知道.
而且,从背景中不断请求数据的最佳方式是每隔n分钟,并通过其控制器更新页面.
鉴于以下片段:
超级实施:
@Override
public void onDone(String taskName, JSONObject receivedData, @Nullable HashMap<String, String> sentData) {
//checks the status for all done process decides to call the presenter failed or success
try {
boolean success = receivedData.getString("status").equals("success");
if(!success){
this.presenter.error(receivedData.getString("reason"));
}
}catch (JSONException ex){
ex.printStackTrace();
this.presenter.error("An error occurred");
}
}
Run Code Online (Sandbox Code Playgroud)
子类实施::
@Override
public void onDone(@NonNull String taskName, @NonNull JSONObject receivedData,
@Nullable HashMap<String, String> sentData) {
super.onDone(taskName, receivedData, sentData);
//the expected data has been received we should act upon it
//this DAO should know …Run Code Online (Sandbox Code Playgroud) 如何在Lumen中设置Cookie/Session生命周期.在laravel中可以找到,app/config/session.php但由于Lumen使用.env文件进行配置,如何设置会话的生命周期?此外,当我在会话中放置一个值时,Session::put($key,$value)它不会持续超过3个请求,值会丢失,这可能是由于它的生命周期或其他原因?
以防万一,这是我的.env文件的样子:
APP_ENV=local
APP_DEBUG=true
APP_KEY=SomeRandomKey!!!
APP_LOCALE=en
APP_FALLBACK_LOCALE=en
DB_CONNECTION=mysql
DB_HOST=localhost
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=
CACHE_DRIVER=cookie
SESSION_DRIVER=cookie
QUEUE_DRIVER=database
Run Code Online (Sandbox Code Playgroud)