小编Way*_*her的帖子

如何自定义Laravel 5.7的电子邮件验证邮件?

我刚刚升级到Laravel 5.7,现在我正在使用内置的电子邮件验证.然而,有两件事我无法弄清楚,主要问题是我如何自定义发送给用户以验证其电子邮件的电子邮件?如果用户更改了他们的电子邮件,我也无法弄清楚如何发送该电子邮件,但我可以将其保存为另一个线程.

php email email-verification laravel

13
推荐指数
5
解决办法
1万
查看次数

如何修复Laravel 5.7中的"Class signed not exists"错误?

我刚刚将Laravel项目从5.6更新到5.7.我升级的主要原因是我需要为我的项目添加电子邮件验证.完成所有升级步骤并根据Laravel文档实施电子邮件验证后,我收到错误消息.所以导致错误的步骤是这样的:

我使用了1路来测试,在我的..\routes\web.php文件中我有这行代码:

Route::get('dashboard', ['uses' => 'DashboardController@getDashboard'])->middleware('verified');
Run Code Online (Sandbox Code Playgroud)

当我尝试去那条路线时,它会将我重定向到..\views\auth\verify.blade.php的视图.在那里,我点击链接发送验证邮件.我收到电子邮件然后单击电子邮件中的按钮以验证我的电子邮件.它启动一个浏览器并开始在某处导航我,当它出现错误时:

Class signed does not exist
Run Code Online (Sandbox Code Playgroud)

经过大量研究后,我发现错误发生在新的VerificationController.php文件中,说明创建该文件,导致问题的代码行是:

$this->middleware('signed')->only('verify');
Run Code Online (Sandbox Code Playgroud)

如果我出注释此行,然后单击我的电子邮件按钮再然后它没有任何错误,我的用户email_verified_at列都与一个日期时间戳更新.

下面是整个VerificationController.pas,以防它解决问题:

<?php

namespace App\Http\Controllers\Auth;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\VerifiesEmails;

class VerificationController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Email Verification Controller
    |--------------------------------------------------------------------------
    |
    | This controller is responsible for handling email verification for any
    | user that recently registered with the application. Emails may also
    | be re-sent if the user didn't receive the original email message.
    |
    */
    use VerifiesEmails;
    /**
     * Where to …
Run Code Online (Sandbox Code Playgroud)

php email verification laravel

5
推荐指数
1
解决办法
1197
查看次数

SQLite.swift模块文件是由较旧版本的编译器创建的

我只使用xcode大约一个月.我安装了xcode 6并创建了一个项目,该项目使用来自GitHub的stephencelis的SQLite.swift项目.一切都运行良好,我想我必须在今天早上无意中加载Xcode更新.我现在在xcode版本6.3上.现在,当我打开我的项目并执行构建时,我在我的一个单元中的一行中得到错误,该单元执行"导入SQLite".错误消息显示:"模块文件由较旧版本的编译器创建".之前我在SQLite源文件中有50多个错误,因此我下载了SQLite的最新zip并打开了该项目并执行了一个没有错误的构建.但是现在如果我回去编译我的项目,我会得到主题中提到的错误.

我想我只是不知道如何正确使用GitHub中的这些库,或者这是否特定于SQLite.任何帮助将不胜感激.

xcode compiler-errors swift sqlite.swift

4
推荐指数
1
解决办法
3502
查看次数

如何使用 Laravel 5.5 以编程方式登录然后重定向?

我正在使用 Laravel 5.5 和 PHP 7.1 我正在使用标准的内置 Auth 和中间件,我没有自定义任何内容。

我想在 api.php 路由文件中创建一个如下所示的路由:

Route::group(array('prefix' => 'mobile'), function () {
      Route::get('requestaccess', ['uses' => 'MobileController@RequestAccess']);
});
Run Code Online (Sandbox Code Playgroud)

然后在我的 MobileController 中我会有这样的代码:

public function RequestAccess() {
    try {
        $input = request()->all();
        $token = $input['token'];
        //$page = $input['page'];

        $user = User::where('mobile_access_token', $token)->first();
        if (!$user)
            return view('public.error', ['errorCode' => 901]);

        if ($user->mobile_access_expires < Carbon::now())
            return view('public.error', ['errorCode' => 902]);

         // I tried with and without the second param (true)
        if (!Auth::loginUsingId($user->id, true))
            return view('public.error', ['errorCode' => 903]);

        // …
Run Code Online (Sandbox Code Playgroud)

php authentication redirect laravel

3
推荐指数
1
解决办法
6621
查看次数

用于电子邮件验证的签名路由未通过签名验证

我最近将我的项目从 Laravel 5.6 更新到 5.7,并将 Laravel 文档中描述的电子邮件验证步骤添加到我的项目中。在我的开发机器(http)上一切正常,但是当我用所有更改更新我的生产服务器(https)时,当 Laravel 向我发送带有链接(签名路由)的电子邮件时,它为我生成了单击按钮或粘贴的链接进入我的浏览器 laravel 似乎无法验证它创建的签名。副作用是每次我单击按钮或将链接粘贴到浏览器中时,我都会收到错误消息:

403 抱歉,您无权访问此页面。

到目前为止我所追踪的是我在 laravel 的 ValidateSignature.php 类中找到了代码,并添加了一些日志消息。

public function handle($request, Closure $next)
{
    Log::info('checking signature');
    if ($request->hasValidSignature()) {
        Log::info('signature is valid');
        return $next($request);
    }

    Log::info('throwing InvalidSignatureException');
    throw new InvalidSignatureException;
}
Run Code Online (Sandbox Code Playgroud)

更具体地说,我在 laravel 单元 UrlGenerator.php 中追踪了确切的问题,我在以下方法中添加了日志:

public function hasValidSignature(Request $request)
{
    $original = rtrim($request->url().'?'.Arr::query(
        Arr::except($request->query(), 'signature')
    ), '?');

    $expires = Arr::get($request->query(), 'expires');

    $signature = hash_hmac('sha256', $original, call_user_func($this->keyResolver));

    Log::info('url: '.$original);
    Log::info('expire: '.$expires);
    Log::info(' new signature: '.$signature);
    Log::info('link signature: '.$request->query('signature', ''));
    Log::info('hash …
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-5.7

3
推荐指数
1
解决办法
3945
查看次数

如何修复 Laravel request/routes/urls - 它认为 url 是 http,而实际上是 https

我的服务器使用 SSL,因此我的所有路由/url 都使用 https。我最近在 Laravel 5.7 中发现了一个错误,该错误在尝试使用电子邮件验证时暴露出来,该错误在带有 https 的服务器上不起作用。我不会详细讨论该问题,因为我还有另一个问题。我想保持这个简单。我的 .env 文件中有以下设置:

APP_USE_HTTPS=true
APP_URL=https://www.example.com
APP_ENV=production
Run Code Online (Sandbox Code Playgroud)

我在 AppServiceProvider 的 boot() 方法中有以下内容

    if (env('APP_USE_HTTPS')) {
        Log::info('AppServiceProvider: forcing URLs to use https');
        URL::forceScheme('https');
    }
Run Code Online (Sandbox Code Playgroud)

这可能有点矫枉过正,但为了尝试解决这个问题,我还将以下代码放在我的 web.php 路由文件的顶部”

if (env('APP_USE_HTTPS')) {
    Log::info('Routes: forcing URLs to use https');
    URL::forceScheme('https');
}

Route::get('/', 'PublicController@getHome');
Route::get('home', 'PublicController@getHome');
Run Code Online (Sandbox Code Playgroud)

然后在我的 PublicController.getHome() 方法中我输入了以下代码:

public function getHome()
{
    $currentPath= Request::fullUrl();
    Log::info($currentPath);

    return view('public.home');
}
Run Code Online (Sandbox Code Playgroud)

现在我转到浏览器并在地址栏中输入:

https://www.example.com
Run Code Online (Sandbox Code Playgroud)

我在日志文件中得到了这个:

AppServiceProvider: forcing URLs to use https
Routes: forcing URLs to use https
http://www.example.com
Run Code Online (Sandbox Code Playgroud)

正如您从最后一条日志消息中看到的那样,laravel 始终使用 http …

https routes http laravel

3
推荐指数
1
解决办法
5048
查看次数

Laravel 应用程序关闭时会触发什么事件?

具体来说,我正在做的是在我的 AppServiceProvider->boot() 方法中,我正在创建一个如下所示的单例类:

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        $this->app->singleton('App\Support\PushNotificationHelper', function ($app) {
            return new PushNotificationHelper();
        });  
     }
 }
Run Code Online (Sandbox Code Playgroud)

我用于将通知推送到移动应用程序的队列工作器作业需要 helper 类。当移动设备是 Apple 设备时,我需要建立 curl 连接并使连接在队列工作器作业的生命周期后持续存在。这就是为什么我使用单例来保持连接,如:

class PushNotificationHelper {
    protected $http2Connection;
    protected $http2Expire ;

    public function getConnection($options) {
        $this->http2Connection = curl_init();
        curl_setopt_array($this->http2Connection, $options);
        return $this->http2Connection;
    }
Run Code Online (Sandbox Code Playgroud)

Apple 声称如果我反复连接和断开连接,那么他们将发出拒绝服务 (DOS)。我的应用程序每小时发送 1000 条通知。每当我使用连接时,我都会检查错误并在需要时关闭/重新打开连接,例如:

 curl_close($http2Connection);
Run Code Online (Sandbox Code Playgroud)

但是,我想知道如何检测应用程序何时会永久关闭,以便我可以正常关闭连接。如果没有办法做到这一点,随着时间的推移,它会因为打开连接挂起而损害我的服务器,如果应用程序每天启动/停止几次,可以说运行数月吗?

另一种选择可能是有一个 curl 选项来告诉连接在很长时间后自动断开连接。(我每 4 小时强制关闭并重新打开一次)所以如果我可以告诉连接在至少 5 小时后自动关闭,那么它可能会自我清洁?

curl service-provider laravel

3
推荐指数
1
解决办法
751
查看次数

如何通过iOS swift照片框架保存时命名照片

我正在使用Xcode 6.3swift(我认为版本1.2).我的应用程序从Web上的自定义服务器下载照片.然后我希望它将具有给定文件名的照片保存到自定义相册中,该相册是通过照片框架创建的.我需要能够控制照片/文件名,因为我会跟踪我在数据库中下载的照片,然后需要按名称查看它们.

我创建了一个自定义的PhotoAlbum类,我试图包含所有与相册交互的逻辑.一旦我下载了一张照片,我可以调用以下代码,它可以创建相册并保存照片,但是正如您将在savePhoto()方法中注意到的那样,我不知道在保存时使用photoName变量命名照片的位置/方式.最后,我还需要知道如何在loadPhoto()方法中按名称检索照片.

感谢您提供的任何帮助/建议.

let myAlbum = PhotoAlbum("MyAlbum") 

myAlbum.savePhoto(downloadedPhoto, 12)

class PhotoAlbum {

var albumName: String = ""
var albumExists: Bool = false
var assetCollection: PHAssetCollection!
var photosAsset: PHFetchResult!

init(albumName: String) {
    self.albumName = albumName
    self.initializeAlbum()
}

private func initializeAlbum() {

    let fetchOptions = PHFetchOptions()
    fetchOptions.predicate = NSPredicate(format: "title = %@", self.albumName)
    let collection: PHFetchResult = PHAssetCollection.fetchAssetCollectionsWithType(.Album, subtype: .Any, options: fetchOptions)

    if let firstObject: AnyObject = collection.firstObject {
        self.albumExists = true
        self.assetCollection = collection.firstObject …
Run Code Online (Sandbox Code Playgroud)

xcode frameworks photo ios swift

1
推荐指数
1
解决办法
5194
查看次数

SSL 问题 - 使用 Flysystem 3.x 的 Laravel 9 在调用 AWS S3 的 Storage contains() 方法时无法检查是否存在?

我有一个 laravel 项目,刚刚从 8.x 升级到最新的 9.x。作为升级的一部分,它需要许多其他组件,例如文件系统(我猜称为 Flysystem)也从 1.x 升级到 3.x。我有一行代码现在导致我的系统崩溃:

if (Storage::disk($disk)->exists($avatarFilename)) {
Run Code Online (Sandbox Code Playgroud)

这以前一直有效,但现在又回来了:

ERROR: Unable to check existence for: avatars/31-feea15debc.png
[stacktrace]
#0 D:\\vhosts\\vendor\\league\\flysystem-aws-s3-v3\\AwsS3V3Adapter.php(157): League\\Flysystem\\UnableToCheckExistence::forLocation('avatars/31-feea...', Object(Aws\\S3\\Exception\\S3Exception))
#1 D:\\vhosts\\vendor\\league\\flysystem\\src\\Filesystem.php(48): League\\Flysystem\\AwsS3V3\\AwsS3V3Adapter->directoryExists('avatars/31-feea...')
#2 D:\\vhosts\\vendor\\laravel\\framework\\src\\Illuminate\\Filesystem\\FilesystemAdapter.php(174): League\\Flysystem\\Filesystem->has('avatars/31-feea...')
#3 D:\\vhosts\\app\\Models\\User.php(1120): Illuminate\\Filesystem\\FilesystemAdapter->exists('avatars/31-feea...')
#4 D:\\vhosts\\scoutek.com\\storage\\framework\\views\\eb5469bb9d755dff931d80dd79d9a76a9a7a2a21.php(10): App\\Models\\User->getAvatar()
Run Code Online (Sandbox Code Playgroud)

在深入研究 Laravel 日志文件中报告的数千行后,我发现以下内容看起来是异常的原因:

(Aws\\S3\\Exception\\S3Exception(code: 0): Error executing 
\"ListObjects\" on 
\"https://scoutek-development.s3.amazonaws.com/?prefix=avatars%2F31-feea15debc.png%2F&max-keys=1&delimiter=%2F&encoding-type=url\"; 
AWS HTTP error: cURL error 60: SSL certificate problem: 
unable to get local issuer certificate 
(see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for 
Run Code Online (Sandbox Code Playgroud)

我已经使用 OpenSSL 并创建了我的密钥和证书文件,并在 apache conf 文件中引用了它们,当我运行 phpinfo() 时,我可以看到我在创建证书时输入的所有本地主机证书数据,因此 php 似乎知道该证书。我正在运行 WAMP 3.2.3、PHP 8.1.5、Apache 2.4.46

ssl amazon-s3 amazon-web-services laravel-9

1
推荐指数
1
解决办法
1万
查看次数