Laravel 5.8护照客户验证

时间:2019-04-13 03:28:27

标签: laravel authentication vue.js vuetify.js laravel-passport

我正在尝试将laravel Passport用于我的Web应用程序,下面的代码显示了我如何实现控制器。

public function login(Request $request){

$validateInputs =
Validator::make(
$request->all(),
[
'email'=>'required',
'password' => 'required'
]
);
if($validateInputs->fails()){

    return response()->json(['errors' => $validateInputs->errors(),'registrationerror'=>'Login failed' ]);
} else {

    $userEmail = User::where('email', $request->email)->first();

    if(!$userEmail){
        return response(['status'=>'error','message' => 'User not found']);
    } else {
        if(Auth::attempt(['email' => $request->email, 'password' => $request->password])){

            $request->request->add([
                'grant_type' => 'password',
                'client_id' => '2',
                'client_secret' => '7VnHdWYHJQpqg1RU0cWXtbTl33lmdFHDF6W2HiSo',
                'username' => $request->email,
                'password' => $request->password,
                'scope' => '',
            ]);
            $token = Request::create(
                'oauth/token',
                'POST'
            );
            return \Route::dispatch($token);

        }else{
            return response(['status'=>'error','messagePw' => 'Please check the password']);
        }
    }
}

}

然后我将Vuetify用作前端。这是示例代码

<script>
import axios from 'axios'
//  import router from '../router'
import EventBus from './EventBus'
export default {
  data () {
    return {
      email: null,
      password: null
    }
  },
  methods: {
    login () {
      axios.post('/login', {
        email: this.email,
        password: this.password
      })
        .then((response) => {
          console.log(response)
          let accessToken = response.data.access_token
          if (accessToken) {
            localStorage.setItem('token', accessToken)
            localStorage.setItem('user', this.email)
            EventBus.$emit('loggedIn')
            window.isSignedIn = true
            this.$router.push('/dashboard')
          }
        })
        .catch((err) => {
          console.log(err)
        })
      this.emitMethod()
    },
    emitMethod () {
      EventBus.$emit('logged-in', 'loggedin')
    }
  }
}
</script>

我的问题是如何验证每个URL中的客户端。现在,我要做的是如果登录功能返回访问令牌,它将作为令牌保存在本地存储中,然后登录组件将检查本地存储中是否存在令牌。所以我知道这个方法不是一个好方法。因为我看到可以手动将字段设置为令牌。这个问题可能并不专业,但是如果有人可以告诉我如何解决此问题。请告诉我如何在api请求中使用laravel护照验证用户。谢谢

0 个答案:

没有答案