그래서 WebApi 메서드를 호출하는 MVC 응용 프로그램이 있습니다.Web.Api의 기본 토큰 인증 및 권한 부여
MVC 응용 프로그램에 내 인증이public class CustomAuthorizeAttribute : AuthorizeAttribute {
private RolesEnum _role;
public CustomAuthorizeAttribute() {
_role = RolesEnum.User;
}
public CustomAuthorizeAttribute(RolesEnum role) {
_role = role;
}
protected override bool AuthorizeCore(HttpContextBase httpContext) {
User currentUser = (User)httpContext.Session["CurrentUser"];
if (currentUser == null) {
return false;
}
if (currentUser.Role == RolesEnum.User && _role == RolesEnum.Admin) {
return false;
}
return true;
}
위한 인증과 같이 이루어집니다
는
[HttpPost]
public ActionResult Login(string username, string password)
{
User acc = new User();
acc.Username = username;
acc.Password = password;
acc = accBL.Login(acc);
if (acc != null) {
Session.Add("CurrentUser", acc);
return RedirectToAction("Index", "Project", null);
} else {
return View();
}
}
로그인 방법이
public User LogIn(User acc) {
try {
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(BASE_URL);
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.PostAsJsonAsync("api/Account/Login", acc).Result;
if (response.IsSuccessStatusCode) {
return response.Content.ReadAsAsync<User>().Result;
} else {
return null;
}
} catch {
return null;
}
}
그리고 WebApi 방법처럼 보이는 WebApi 메소드를 호출 완료 이 모양은
입니다.[Route("api/Account/Login")]
[HttpPost]
public IHttpActionResult Login(User userModel) {
User user = db.Users.Where(p => p.Username == userModel.Username && p.Password == userModel.Password).FirstOrDefault();
if (user != null) {
return Ok(user);
} else {
throw new HttpResponseException(HttpStatusCode.Unauthorized);
}
}
어떻게하면 MVC App과 WebApi 서비스를 연결할 수 있습니까? 내 권한 부여 및 인증은 MVC 부분에서 작동하지만 WebApi 서비스를이 권한/인증없이 호출 할 수 있습니다. 예제를 기반으로 WebApi도 보호 할 수 있습니까? 나는 MVC와 WebApi로 약 3 주간 일해 왔으며 많은 것들이 나에게 너무 분명하지 않다.
공개 IHttpActionResult 로그인 (사용자 userModel)에 GUID를 만들고 메서드가 호출 될 때마다 확인해야합니까? 이 GUID를 MVC App 및 MVC에서 WebApi로 전달하는 방법은 무엇입니까?
몇 가지로 테스트 해 보겠습니다! 답변 주셔서 감사합니다! – CiucaS
답변을 수락했습니다. 게시 한 내용 중 일부를 수정하여 일부 수정했습니다. 고맙습니다! – CiucaS
해결책을 찾았습니다. 내가 게시 한 아이디어는 이미 작동중인 큰 프로젝트에서 온 것입니다 ... – ubi