Переключение с простой аутентификации на Laravel Паспорт - PullRequest
1 голос
/ 14 марта 2020

Я создал веб-приложение (laravel и vue js) с простой аутентификацией, затем я попытался использовать паспорт laravel, но он не работал. У меня есть некоторые проблемы, когда я пытаюсь войти в систему, перенаправить меня на домашнюю страницу, и он не может восстановить пользователя, аутентифицированного в (home.blade). Действительно мне нужна помощь, ребята ?? это часть ошибки в home.blade. php:

</div>
      <div class="info">
       <a href="#" class="d-block">{{ Auth::user()->name}}</a>
    </div>
  </div>

и функция входа в систему:

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

   if(!Auth::attempt($validation)){
       return response(['status'=>'error','message'=>'user Undefined']);
   }
 $accesToken =Auth::user()->createToken('TokenName')->accessToken;
 return response(['user'=>Auth::user(), 'acces_token'=>$accesToken]);
}
public function userauth(){
  return Auth::user()->first();
}

и это моя loginForm. vue:

 <template>
  <form>
  <div class="form-group">
  <label for="exampleInputEmail1">Adresse Email:</label>
 <input type="email" class="form-control" v-model="user.email" id="exampleInputEmail1" aria- 
describedby="emailHelp">

</div>
<div class="form-group">
<label for="exampleInputPassword1">Mot de passe:</label>
<input type="password" class="form-control" v-model="user.password" 
id="exampleInputPassword1">
</div>
<div class="form-group form-check">
<input type="checkbox" class="form-check-input" id="exampleCheck1">
<label class="form-check-label" for="exampleCheck1">Check me out</label>
</div>
 <button type="submit" @click="login"    class="btn btn-primary">Submit</button>
 </form>
 </template>
  <script>
  export default{
  data:()=>({
  user:{
      email:"",
      password:""
}
}),
methods: {
       login(){
this.$store.dispatch('currentUser/loginUser',this.user); 
}  
}
}

и это мой API. php:

Route::post('/login','API\AuthenController@login');
Route::post('/userauth','API\AuthenController@userauth');

и это мой HomeController:

  <?php
 namespace App\Http\Controllers\API;
 use  App\Http\Controllers;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Auth;
class HomeController extends Controller
{
/**
 * Create a new controller instance.
 *
 * @return void
 */
public function __construct()
{
    $this->middleware('auth:api');
}

/**
 * Show the application dashboard.
 *
 * @return \Illuminate\Contracts\Support\Renderable
 */
public function index()
{   
    return view('home');
}
}

1 Ответ

0 голосов
/ 14 марта 2020

Возможно, проблема в том, что вы не используете Passport для входа в систему здесь. Если вы правильно установили Passport, вы сможете увидеть новые маршруты для аутентификации, введя php artisan route:list в командной строке. Там вы должны увидеть некоторые маршруты, которые выглядят следующим образом:

|        | GET|HEAD  | oauth/authorize                          | passport.authorizations.authorize | Laravel\Passport\Http\Controllers\AuthorizationController@authorize       | web,auth     |
|        | DELETE    | oauth/authorize                          | passport.authorizations.deny      | Laravel\Passport\Http\Controllers\DenyAuthorizationController@deny        | web,auth     |
|        | POST      | oauth/authorize                          | passport.authorizations.approve   | Laravel\Passport\Http\Controllers\ApproveAuthorizationController@approve  | web,auth     |
|        | GET|HEAD  | oauth/clients                            | passport.clients.index            | Laravel\Passport\Http\Controllers\ClientController@forUser                | web,auth     |
|        | POST      | oauth/clients                            | passport.clients.store            | Laravel\Passport\Http\Controllers\ClientController@store                  | web,auth     |
|        | PUT       | oauth/clients/{client_id}                | passport.clients.update           | Laravel\Passport\Http\Controllers\ClientController@update                 | web,auth     |
|        | DELETE    | oauth/clients/{client_id}                | passport.clients.destroy          | Laravel\Passport\Http\Controllers\ClientController@destroy                | web,auth     |
|        | GET|HEAD  | oauth/personal-access-tokens             | passport.personal.tokens.index    | Laravel\Passport\Http\Controllers\PersonalAccessTokenController@forUser   | web,auth     |
|        | POST      | oauth/personal-access-tokens             | passport.personal.tokens.store    | Laravel\Passport\Http\Controllers\PersonalAccessTokenController@store     | web,auth     |
|        | DELETE    | oauth/personal-access-tokens/{token_id}  | passport.personal.tokens.destroy  | Laravel\Passport\Http\Controllers\PersonalAccessTokenController@destroy   | web,auth     |
|        | GET|HEAD  | oauth/scopes                             | passport.scopes.index             | Laravel\Passport\Http\Controllers\ScopeController@all                     | web,auth     |
|        | POST      | oauth/token                              | passport.token                    | Laravel\Passport\Http\Controllers\AccessTokenController@issueToken        | throttle     |
|        | POST      | oauth/token/refresh                      | passport.token.refresh            | Laravel\Passport\Http\Controllers\TransientTokenController@refresh        | web,auth     |
|        | GET|HEAD  | oauth/tokens                             | passport.tokens.index             | Laravel\Passport\Http\Controllers\AuthorizedAccessTokenController@forUser | web,auth     |
|        | DELETE    | oauth/tokens/{token_id}                  | passport.tokens.destroy           | Laravel\Passport\Http\Controllers\AuthorizedAccessTokenController@destroy | web,auth     |
|        | POST      | password/email                           | password.email                    | App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail     | web,guest    |
|        | GET|HEAD  | password/reset                           | password.request                  | App\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm    | web,guest    |
|        | POST      | password/reset                           |                                   | App\Http\Controllers\Auth\ResetPasswordController@reset                   | web,guest    |
|        | GET|HEAD  | password/reset/{token}                   | password.reset                    | App\Http\Controllers\Auth\ResetPasswordController@showResetForm           | web,guest    |

Нужно проверить, что ваша серверная сторона работает в первую очередь, отправив запрос POST с правильными учетными данными на конечную точку предоставления пароля, следующим образом:

POST: http://localhost:8080/oauth/token
{
    "grant_type" : "password",
    "client_id" : 1,
    "client_secret" : "<your client secret key here>",
    "username" : "username",
    "password" : "password",
    "scope" : ""
}

Идентификатор и секретный номер клиента должны быть найдены в вашей таблице oauth_clients, где столбец password_client содержит 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...