【问题标题】:How can I use sentry with laravel 5?如何在 laravel 5 中使用哨兵?
【发布时间】:2015-02-16 09:49:01
【问题描述】:

我尝试在 laravel 5 中安装哨兵,但它不起作用。我想知道是否有人做过以及如何做。

更新:我使用了 Laravel 4 的说明。

【问题讨论】:

  • 到目前为止您尝试过什么?如果您出错了,包含此信息将帮助我们了解您出错的地方。
  • 请参阅下面的说明。就所包含的信息而言,我并不感到惊讶。佐渡可能遇到了同样的事情。如果我包含有关堆栈溢出问题的所有信息并花一个小时确保一切看起来都很完美,那么我会因为信息太多而被打分。如果我没有包含足够的内容,那么我会因为我没有足够的内容而被标记下来。我不怪他问了一个直截了当的问题。他并没有因为错误而寻求帮助。他在问是否有人这样做以及如何做到这一点。降价只会让你生气!
  • 感谢 scrfix。问这个问题几乎感觉很愚蠢。甚至尝试编辑问题,但不知道要添加什么。
  • @SadoOgie 不客气。我一直是首当其冲的人,我认为他们在这个网站上拥有强大的力量,无论你做什么,无论你花费多少时间或研究,你的问题仍然会被标记,有人标记你,它只是去惹你生气,并告诉其他人远离该死的网站。现在,话虽如此,并不是每个人都这样做。很明显,这里有很多乐于助人的人,因为这个网站很大。
  • 是的,有些用户不知道不清楚的问题与他们可能不是最佳回答者而应该留给其他人回答的问题之间的区别。

标签: php laravel cartalyst-sentry


【解决方案1】:

我有这个工作。

  1. 目前在 L5 中没有对 Sentry 的官方支持。他们在他们的网站上声明了这一权利。不过,他们正在努力。

  2. 将以下内容添加到您的 composer.json 文件的 require 部分。

     "cartalyst/sentry": "dev-feature/laravel-5",
     "illuminate/html": "~5.0"
    

将以下内容添加到自动加载部分。

"app/Http/Controllers",

它应该看起来像:

"require": {
    "laravel/framework": "5.0.*",
    "cartalyst/sentry": "dev-feature/laravel-5",
    "illuminate/html": "~5.0"
},
"require-dev": {
    "phpunit/phpunit": "~4.0",
    "phpspec/phpspec": "~2.1"
},
"autoload": {
    "classmap": [
        "database",
        "app/Classes",
        "app/Http/Controllers",
        "app/Models"
  1. (假设 linux 没有别名)运行 php composer.phar dump-autoload 然后 php composer.phar update

  2. 按照下一页上的说明将文件从 4.2 转换为 5.0:http://laravel.com/docs/master/upgrade#upgrade-5.0

  3. 如果您为 FORMS 使用 HTML Facade,则将 FORM 的 {{{ }}} 或 {{ }} 更改为 {!! !!} 因为 L5 转义了 {{{ }}} 和 {{ }} 的所有输出。如果你想要原始输出,你必须使用 {!! !!}。

  4. 当您按照 #4 中的说明将重定向检查移动到引导方法时,然后将以下内容添加到 RouteServiceProvider.php 的顶部

    使用 Cartalyst\Sentry\Facades\Laravel\Sentry;

引导方法应该类似于:

public function boot(Router $router)
    {
        parent::boot($router);
        // Check if someone is already logged in
        Route::filter('members_auth',function(){
        //If already logged in go to dashboard or else login
            if(!Sentry::check()){
                return Redirect::to('/login');
            }
        });

        //
    }

2015 年 2 月 26 日更新

  1. 不要运行命令php artisan optimize,因为它会破坏哨兵。运行此程序后,我无法弄清楚出了什么问题,但认为它可能与compiled.php文件有关,因此我运行了 php artisan optimize --force 并解决了任何问题。

希望对你有帮助。

【讨论】:

  • 安装后,您可以通过运行以下命令将包配置文件发布到您的应用程序中:php artisan vendor:publish --provider="Cartalyst\Sentry\SentryServiceProvider"
【解决方案2】:

我没有亲自安装它,但我知道它是兼容的。 https://medium.com/@Cartalyst/laravel-5-support-4c11e01c3337

安装说明没有具体的 Laravel5 信息,但它应该与 L4 相同,等待你拉入正确的分支。假设您正在使用 composer,您可以通过在 composer.json 中要求 "cartalyst/sentry": "dev-feature/laravel-5" 来做到这一点。

按照 L4 安装的其余部分(添加到提供程序和别名数组)和信息,除了记住 app.php 不再在 app/config/app.php 中,而是在 config/app.php

如果仍然无法解决您的问题,请务必使用至少一些信息更新您的问题...

【讨论】:

  • 我遇到了同样的问题,当我从 L4 更新到 L5 时,我收到了这个错误:找不到 Class 'App\Http\Controllers\Sentry' 现在我已经将这些行包含在我的app.php: 'Cartalyst\Sentry\SentryServiceProvider', // 在提供者中 'Sentry' => 'Cartalyst\Sentry\Facades\Laravel\Sentry', // 在别名中我得到这个错误:ServiceProvider.php 行中的 BadMethodCallException 226:调用未定义的方法[包]我真的被困在这个问题上,你能帮帮我吗?
  • @Dries - 按照以下说明进行操作。听起来您没有将正确的项目添加到您的 composer.json 文件中。
【解决方案3】:

bootstarpCms 使用 laravel5 和 sentry,所以你可以阅读源代码来学习。这里https://github.com/BootstrapCMS/CMS

【讨论】:

    【解决方案4】:

    试用 Sentinel:https://github.com/rydurham/Sentinel

    添加到作曲家

    composer require rydurham/sentinel
    

    在 config/app.php 中

    'providers' => array(
        ...
        'Sentinel\SentinelServiceProvider', 
        ...
    )
    

    在app/Http/Kernel.php中

    protected $routeMiddleware = [
        // ..
        'sentry.auth' => 'Sentinel\Middleware\SentryAuth',
        'sentry.admin' => 'Sentinel\Middleware\SentryAdminAccess',
    ];
    

    然后

    发布配置:

    php artisan sentinel:publish
    

    运行迁移:

    php artisan migrate
    

    运行播种机:

    php artisan db:seed --class=SentinelDatabaseSeeder
    

    在 app/routes.php 中添加主路由

     Route::get('/', array('as' => 'home', function()
    {
        return View::make('home');
    }));
    

    全部完成,转到 myapp.dev/login

    【讨论】:

    • 这些都来自文档。但是,我是新手,我想自定义 Sentinel 并添加一些功能。你有什么线索吗
    • 例如:注册后邮箱激活和角色管理
    • 请注意rydurham/Sentinel 支持cartalyst/sentry 的旧(已弃用)版本。只是为了混淆问题,它与cartalyst/sentinel(2.0 现在是免费开源)没有任何关系,它正在接管cartalyst/sentry。文档对此还很不清楚。所有这些库创建的表也会发生冲突,因此您只能使用其中一个。希望意识到这一点将有助于避免一些痛苦。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 2014-10-11
    • 2014-06-11
    • 2013-06-05
    • 1970-01-01
    • 2023-03-18
    • 2019-11-09
    相关资源
    最近更新 更多