如何在Laravel 5.3中创建自定义授权认证

5

我在使用Laravel 5.3的自定义身份验证过程中遇到了问题,想要在检查 Auth::check() 时使用自己的函数或页面,但返回值却是false。 以下是用户控制器代码:

namespace App\Http\Controllers;

use App\User;
use Illuminate\Support\Facades\Session;
use validatior;
use Auth;
use Illuminate\Http\Request;

class UserController extends Controller
{
    public function postSignUp(Request $request)
    {
        $validation = \Validator::make($request->all(), [
            'email' => 'email|required|unique:users',
            'password' => 'required|min:4'
        ]);

        if ($validation->fails()) {
            return redirect()->back()->withErrors($validation->errors());
        } else {
            $user = new User();
            $user->email = $request->get("email");
            $user->password = bcrypt($request->get['password']);
            $user->save();
        }

        return redirect('signupPage');
    }

    public function postSignIn(Request $request)
    {
        $this->validate($request, [
            'email' => 'required',
            'password' => 'required',
        ]);

        if (Auth::attempt(['email' => $request['email'], 'password' => $request['password']])) {
            return redirect('users/profile');
        }

        dd(Auth::check());
        exit;
    }
}

在登录后,我想重定向到个人资料页面,但我的条件不起作用。我的路由如下:

Route::group(['prefix' => 'users'], function(){
    Route::group(['middleware' => 'guest'], function(){
        Route::get('/signupPage','UserController@getSignUp');
        Route::post('/register',array ('as'=>'signup', 'uses' =>'UserController@postSignUp', ));
        Route::get('signInPage', array('as' => 'signInPage', 'uses' => 'UserController@getSignIn'));
        Route::post('/postLogin', array('as' => 'postLogin', 'uses' => 'UserController@postSignIn'));
    });

    Route::group(['middleware' => 'auth'], function(){
        Route::get('/profile', array('as' => 'profile', 'uses' => 'UserController@getProfile'));
        Route::get('/logout', array('as'=>'logout', 'uses'=> 'UserController@logout'));
    });
});
1个回答

1
回复内容存在敏感词^**$; $user->password = $pas; $user->save(); }
return redirect('users/signInPage'); }

在注册用户时请使用bcrypt函数,因为此函数默认由Auth Attempt函数使用。

public function postSignIn(Request $request)
{
   // 验证请求数据
    $this->validate($request, [
        'email' => 'required',
        'password' => 'required',
]); // 获取请求中的email和password $email = $request->input['email']; $password = $request->input['password']; // 尝试使用email和password进行登录 if (Auth::attempt(['email'=>$email,'password'=>$password])) { // 如果登录成功则重定向到用户资料页面 return redirect('users/profile'); }
// 如果登录失败则重定向到登录页面,并返回错误信息 return redirect('users/signInPage')->withErrors(['failure' => 'The credentials you entered did not match our records. Try again!',]); }
// 最后,由于您使用了默认中间件,因此会出现太多重定向错误。您需要编写自定义中间件以适应您的逻辑。运行以下命令来创建自定义中间件: // php artisan make:middleware CutomAuth // 这将创建您的自定义中间件。然后,请按照您的逻辑在其中编写代码,并在app/Http/Kernel.php中注册它,如下所示: // 'customauth' => \Illuminate\Auth\Middleware\CutomAuth::class, // 然后您就可以开始使用它了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接