我正在使用 Laravel Endpoint 和 Angular7 Frontend 开发结果管理应用程序。当我保存到数据库中时,我想保存登录/用户 ID。此外,它将根据登录 ID 显示数据。也就是说,如果 UserId 为 1(用户是 Admin),它将显示所有数据,但如果用户 Id 是除 1 之外的任何其他数字,它将根据表中的登录名/用户 ID 显示数据
我开发了这些表:
此外,我还开发了 Laravel Endpoint 和 Angular7 Frontend。
Laravel 端点:控制器
public function login(Request $request)
{
$credentials = $request->json()->all();
try
{
if(! $token = JWTAuth::attempt($credentials))
{
return response()->json(['error' => 'invalid_credentials'], 400);
} else {
// Generate token from user
$token = JWTAuth::attempt($credentials);
//return response()->json(compact('token'));
return response()->json( [
'access_token' => $token,
'token_type' => 'bearer'
] );
}
}
catch(JWTException $e)
{
return response()->json(['error' => 'could_not_create_token'], 500);
}
}
考试:Laravel EndPoint
public function index()
{
$exams = Exam::all();
return response()->json($exams);
}
public function store(Request $request)
{
$request->validate([
'exam_name' => 'required'
]);
$exam = Exam::create($request->all());
return response()->json([
'message' => 'Great success! New Exam created',
'exam => $exam
]);
}
public function show(Exam $exam)
{
return $exam;
}
接口
Route::get('/exams', 'ExamController@index')->name('exams.index');
Route::post('/exams', 'ExamController@store')->name('exams.store');
Route::get('/exams/{exam}', 'ExamController@show')->name('exams.show');
角度:exam.service.ts
const apiUrl = "http://localhost/schoolbackend/public/api/exams";
getExams (): Observable<Exam[]> {
return this.http.get<Exam[]>(apiUrl)
.pipe(
tap(exams => console.log('Fetch exams')),
catchError(this.handleError('getExams', []))
);
}
addExam (exam): Observable<Exam> {
return this.http.post<Exam>(apiUrl, exam, httpOptions).pipe(
tap((exam: Exam) => console.log(`added exam w/ id=${exam._id}`)),
catchError(this.handleError<Exam>('addExam'))
);
}
考试-display.component.ts
ngOnInit() {
this.api.getExams()
.subscribe(res => {
this.data = res;
console.log(this.data);
this.isLoadingResults = false;
}, err => {
console.log(err);
this.isLoadingResults = false;
});
}
考试-add.component.ts
onFormSubmit(form:NgForm) {
this.isLoadingResults = true;
this.api.addExam(form)
.subscribe(res => {
// let id = res['_id'];
this.isLoadingResults = false;
this.router.navigate(['/examlist']);
}, (err) => {
console.log(err);
this.isLoadingResults = false;
});
}
当用户登录时:
首先,我认为您应该像is_admin(boolean)
在用户表中一样创建一个单独的列。直接从 id 中查找不是一个好主意。
auth::user()
函数中获取用户对象。例子:
// exam controller
// for fetching exams
public function index()
{
$userId = auth()->id();
if ($userId == 1) {
$exams = Exam::all();
} else {
$exams = Exam::where('user_id', $userId)->get();
}
return response()->json($exams);
}
// for creating new exam
public function store(Request $request)
{
$request->validate([
'exam_name' => 'required'
]);
$exam = new Exam;
$exam->exam_name = $request->exam_name;
$exam->user_id = auth()->id()
$exam->save();
return response()->json([
'message' => 'Great success! New Exam created',
'exam => $exam
]);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句