【问题标题】:laravel 4.2 user roles with auth and Entrustlaravel 4.2 具有 auth 和 Entrust 的用户角色
【发布时间】:2015-12-27 03:28:58
【问题描述】:

我找做两个接口

  • 管理员(管理员角色)
  • 订阅者(订阅者角色)

我现在使用的是 Laravel 4 的 auth 和 entrust (Github Link)

录音用户

在我的 SubscriptionContoller.php 中我做了这个:

public function doRegister(){

    $password=Input::get('password');

    $data = array(
    'email'           => Input::get('email'),
    'password'        => Hash::make($password)
    ); 

    $rules = array(
        'email'           => 'required|email',
        'password'        => 'required'
    );

    $messages = array(
        'required' => 'The :attribute field is required.',
    );

    $validator = Validator::make($data, $rules, $messages);        

    if ($validator->fails()) {

        Session::flash('message', 'This email is already registered, please choose another one.');

        return Redirect::to('subscription/register')
            ->withErrors($validator);

    } else {

        $user = new User;

        $role = Role::where('name','=','agency')->first();

        $user->email = Input::get('email');
        $user->password = Hash::make($password); 
        $user->save();

        $user->roles()->attach($role); 

        Session::flash('message', 'Successfully created account! Please login to submit your ad.');
        return Redirect::to('subscription/dashbord');
    }
}

routes.php 和 filters.php 应该怎么写??

【问题讨论】:

  • 所以您想使用他们的角色将用户限制在某些路线上,对吧?

标签: laravel authentication laravel-4 role user-roles


【解决方案1】:

只需将此行放在您的 routes.php

之上
Entrust::routeNeedsRole( 'subscription*', 'agency' );

更多详情:

这将只允许具有 agency 角色的用户能够访问 subscription/* 网址。如果用户没有该角色,则默认情况下会执行 App::abort(403);,它将在您的 views/public/ 文件夹中查找 403.blade.php .

如果你想在用户不匹配角色的情况下做一些特定的事情,你可以传递第三个参数如下:

Entrust::routeNeedsRole( 'subscription*', 'agency', Redirect::to('/not-authorized'));

【讨论】:

    猜你喜欢
    • 2017-10-01
    • 2015-09-09
    • 2015-04-03
    • 2015-03-17
    • 2018-11-04
    • 2017-02-06
    • 2015-08-24
    • 2014-05-08
    • 1970-01-01
    相关资源
    最近更新 更多