Angular中仅展示当前登录HR发布职位的实现方案问询
实现HR仅查看自身发布职位的方案
推荐方案:后端过滤(安全优先)
后端直接从JWT Token中解析当前HR的ID,只返回匹配HrId的职位数据,避免前端获取所有敏感数据。
1. 修改.NET后端API
更新接口,从请求的Token中提取当前HR的UserId,并过滤职位列表:
[HttpGet("GetMyJobPostings")] public IEnumerable<JobPosting> GetMyJobPostings() { // 从Token的Claim中获取当前HR的UserId var userIdClaim = User.Claims.FirstOrDefault(c => c.Type == "UserId"); if (userIdClaim == null || !int.TryParse(userIdClaim.Value, out int hrId)) { return new List<JobPosting>(); } // 只返回当前HR发布的职位 return Context.JobPosting.Where(jp => jp.HrId == hrId).ToList(); }
2. 修改Angular端API服务
替换原有的getAllJobPostings方法,调用新的后端接口:
getMyJobPostings(): Observable<JobPosting[]> { return this.http.get<JobPosting[]>(`${this.basicURL}Main/GetMyJobPostings`); }
3. 在Angular组件中调用
加载当前用户信息后,请求并渲染匹配的职位:
jobPostings: JobPosting[] = []; ngOnInit(): void { const currentUser = this.userService.loadCurrentUser(); if (currentUser) { this.jobPostingService.getMyJobPostings().subscribe(postings => { this.jobPostings = postings; }); } }
备选方案:前端过滤(仅测试/非敏感场景)
如果临时需要前端处理,可在获取所有职位后,通过当前HR的ID过滤数组:
jobPostings: JobPosting[] = []; ngOnInit(): void { const currentUser = this.userService.loadCurrentUser(); if (currentUser) { this.jobPostingService.getAllJobPostings().subscribe(allPostings => { // 过滤出当前HR发布的职位 this.jobPostings = allPostings.filter(posting => posting.hrId === currentUser.UserId); }); } }
注意:前端过滤会将所有职位数据返回给客户端,存在数据泄露风险,仅建议在非生产环境或数据无敏感信息时使用。
内容的提问来源于stack exchange,提问作者ADeveloper
相关产品推荐
相关产品推荐

