Php 如何在《拉维4》中使用哨兵2
我的laravel4应用程序中有一个Personcontroller和一个Festival Controller。这些控制器中的操作只能由管理员访问 如果我的数据库只有一个test@hotmail.com,该用户可以访问这两个控制器的路由。如果我的数据库中没有用户test@hotmail.com,但它有其他用户,这些其他用户无法访问这两个控制器的路由。当我的数据库中有一个用户test@hotmail.com,并且有其他用户,每个人都可以访问这两个控制器的路由 我只想与电子邮件的用户test@hotmail.com访问这些控制器的路由 我通过以下操作安装了Sentry2: 在composer.json文件中,需要:Php 如何在《拉维4》中使用哨兵2,php,laravel,laravel-4,cartalyst-sentry,Php,Laravel,Laravel 4,Cartalyst Sentry,我的laravel4应用程序中有一个Personcontroller和一个Festival Controller。这些控制器中的操作只能由管理员访问 如果我的数据库只有一个test@hotmail.com,该用户可以访问这两个控制器的路由。如果我的数据库中没有用户test@hotmail.com,但它有其他用户,这些其他用户无法访问这两个控制器的路由。当我的数据库中有一个用户test@hotmail.com,并且有其他用户,每个人都可以访问这两个控制器的路由 我只想与电子邮件的用户test@ho
"cartalyst/sentry": "2.0.*"
跑
在app>config>app.php中:
“CartAnalyst\Sentry\SentryServiceProvider”,=>到providers数组
“Sentry”=>“Cartalyst\Sentry\Facades\Laravel\Sentry”,=>到别名数组
安装后,我制作了SentrySeeder文件:
<?php
class SentrySeeder extends Seeder {
public function run()
{
DB::table('users')->delete();
DB::table('groups')->delete();
DB::table('users_groups')->delete();
Sentry::getUserProvider()->create(array(
'email' => 'test@hotmail.com',
'password' => "test",
'activated' => 1,
));
$user = Sentry::getUserProvider()->findByLogin('test@hotmail.com');
$adminGroup = Sentry::getGroupProvider()->findByName('Test');
$user->addGroup($adminGroup);
}
}
LoginController中的登录操作
class PersonController extends BaseController {
public function index()
{
try
{
$user = Sentry::findUserByLogin('test@hotmail.com');
if ($user)
{
$person = Person::with('user')->orderBy('person_id')->paginate(10);
return View::make('persons.index')
->with('person', $person);
}
}
catch (Cartalyst\Sentry\Users\UserNotFoundException $e)
{
echo 'User was not found.';
}
}
}
public function login()
{
$input = Input::all();
$rules = array(
'user_email' => 'required',
'user_password' => 'required'
);
$validator = Validator::make($input, $rules);
if ($validator->fails()) {
return Redirect::to('login')
->withErrors($validator) // send back all errors to the login form
->withInput(Input::except('user_password'));
}
else {
$attempt = Auth::attempt([
'user_email' => $input['user_email'],
'password' => $input['user_password']
]);
if ($attempt) {
return Redirect::to('/home');
}
else {
return Redirect::to('login');
}
}
在数据库中存储用户
public function store()
{
$input = Input::all();
$rules = array(
'user_email' => 'required|unique:users|email',
'user_username' => 'required|unique:users',
);
$validator = Validator::make($input, $rules);
if($validator->passes())
{
$password = $input['user_password'];
$password = Hash::make($password);
$location = new Location();
$person = new Person();
$user = new User();
$person->person_firstname = $input['person_firstname'];
$person->person_surname = $input['person_surname'];
$user->user_username = $input['user_username'];
$user->user_email = $input['user_email'];
$user->user_password = $password;
$location->save();
$person->save();
$user->location()->associate($location);
$user->person()->associate($person);
$user->save();
Session::flash('message', 'Successfully created user!');
return Redirect::to('login');
}
else {
return Redirect::to('persons/create')->withInput()->withErrors($validator);
}
}
看起来您需要使用自己的用户表,还需要使用Sentry。因此,您需要将相关的岗哨栏添加到您的栏中。这很简单: 1转到供应商\cartalyst\sentry\src\migrations 2为您在此处看到的每个文件创建一个新迁移,例如:
php artisan migrate:make add_sentry_groups_table
3仅复制上下代码!到您的新迁移
4并且,对于用户迁移,您必须进行一些更改:
而不是Schema::创建“用户”。。。您可以使用Schema::table'users'…,向表中添加更多列
删除当前用户表中所有列的所有命令,必须删除的行示例:
$table->increments('id');
$table->timestamps();
5运行正常的“php artisan迁移”
在那之后,你应该让哨兵的桌子准备好工作
编辑
由于您没有使用通常的“电子邮件”和“密码”列,请发布Sentry的配置:
php artisan config:publish cartalyst/sentry
改变
'login_attribute' => 'user_email',
看起来您需要使用自己的用户表,还需要使用Sentry。因此,您需要将相关的岗哨栏添加到您的栏中。这很简单: 1转到供应商\cartalyst\sentry\src\migrations 2为您在此处看到的每个文件创建一个新迁移,例如:
php artisan migrate:make add_sentry_groups_table
3仅复制上下代码!到您的新迁移
4并且,对于用户迁移,您必须进行一些更改:
而不是Schema::创建“用户”。。。您可以使用Schema::table'users'…,向表中添加更多列
删除当前用户表中所有列的所有命令,必须删除的行示例:
$table->increments('id');
$table->timestamps();
5运行正常的“php artisan迁移”
在那之后,你应该让哨兵的桌子准备好工作
编辑
由于您没有使用通常的“电子邮件”和“密码”列,请发布Sentry的配置:
php artisan config:publish cartalyst/sentry
改变
'login_attribute' => 'user_email',
在播种机代码中,用户test@hotmail.com没有创建。它怎么能找到那个特定的用户呢?我把一个现有的哨兵改成了test@hotmail.com电子邮件和密码测试,但这也不起作用。我正在学习使用哨兵2。我有我现有的数据库,在安装Sentry2后,我并没有在数据库中更改任何内容,我需要添加一个表或什么吗?您是否检查过您的数据库以查看是否有任何帐户test@hotmail.com是否存在?两条消息都是“找不到用户”。您得到的是哪一条?我有我现有的数据库。你知道sentry为用户使用它自己的数据库表,不是吗?在你的播种机代码中,用户test@hotmail.com没有创建。它怎么能找到那个特定的用户呢?我把一个现有的哨兵改成了test@hotmail.com电子邮件和密码测试,但这也不起作用。我正在学习使用哨兵2。我有我现有的数据库,在安装Sentry2后,我并没有在数据库中更改任何内容,我需要添加一个表或什么吗?您是否检查过您的数据库以查看是否有任何帐户test@hotmail.com是否存在?两条消息都是“找不到用户”。您得到的是哪一条?我有我现有的数据库。你知道sentry为用户使用自己的数据库表,不是吗?这些新创建的迁移必须在应用程序>数据库>迁移中,对吗?我可以使用与vendor\cartalyst\sentry\src\migrations文件夹中相同的名称吗?是的,但是如果使用php artisan migrate:make,它们将已经放置在那里。迁移完成后,我还更新了我的SentrySeeder和PersonController。我想我还是错过了一些东西。我仍然找不到用户。您能在表中看到这些用户吗?是的,我看到了test@hotmail.com在我的桌子上。。在用户电子邮件字段中,用户密码字段是散列的。这些新创建的迁移必须在应用程序>数据库>迁移中,对吗?我可以使用与vendor\cartalyst\sentry\src\migrations文件夹中相同的名称吗?是的,但是如果使用php artisan migrate:make,它们将已经放置在那里。迁移完成后,我还更新了我的SentrySeeder和Pe
遥控器。我想我还是错过了一些东西。我仍然找不到用户。您能在表中看到这些用户吗?是的,我看到了test@hotmail.com在我的桌子上。。在user\u email字段中,user\u password字段是散列的。