2013-12-20 9 views
0

신청서를 작성하는 양식이 있습니다. 양식을 작성하는 사용자에게는 유효한 사용자임을 확인할 수있는 사용자가 없습니다.토큰을 작성하여 양식을 작성하십시오.

이 양식에는 신청자가 찾고있는 직업을 나타내는 매개 변수가 있습니다.

//This is the controller action 
public ActionResult RegisterApplicant(int job_id) 
{ 
    var formModel = new FormModel(){ 
     job_id = job_id 
    }; 
    return View(formModel); 
} 

///This is the view 
@model Jobs.Models.FormModel 

<div class="container"> 
@using(Html.BeginForm("RegisterApplicant")){ 
    @Html.HiddenFor(model=>model.job_id) 

    //Other Fields Here 
    <input type="submit" value="Save"> 
} 
</div> 

의 URL 플러스 양식을 채우기 위해 인증되지 않은 사용자를 허용하려면 RegisterApplicant 메소드를 호출하는 작업 의 JOB_ID를 포함하는 토큰을 생성 할 수있는 방법이 있나요.

메서드에 액세스하는 URL에 명시 적으로 job_id가 표시되지 않도록하고 싶습니다.

저는 해당 URL을 사용하여 전자 메일 메시지로 구직자에게 보냅니다. 감사합니다. .

+1

URL을 통해 보내고 싶지만 URL에 표시하지 않으시겠습니까? 암호화를 사용 하시겠습니까? – user1477388

+0

왜 'Job_Id'를 URL에 넣고 로그인 후에 일반 인증 경로를 사용하여 사용자를 다시 전달할 수 없습니까? 'Job_Id'에 대한 비밀은 무엇입니까? –

답변

1

각 작업에 대해 Guid를 생성하고 작업 ID와 연결할 수 있습니다.

var job = new Job() 
{ 
    job_id = <id>, 
    token = Guid.NewGuid().ToString(); 
} 

JobService.SaveJob(job); 

그런 다음 컨트롤러를 변경하여 토큰을 받고이를 사용하여 작업을 찾으십시오.

public ActionResult RegisterApplicant(string jobToken) 
{ 
    var job = JobService.GetJobByToken(jobToken); 

    var formModel = new FormModel(){ 
     job_id = job.job_id 
    }; 

    return View(formModel); 
} 

** 실제 서비스 구현이 어떻게되는지 모르므로 ** JobService는 가설적인 서비스입니다.

+0

감사합니다. 나는 Guid 방법이 훌륭한 접근 방법이라는 것을 알지 못했습니다! –

관련 문제