Итак, у меня есть приложение MVC, которое вызывает метод WebApi.Базовая аутентификация и авторизация Token на Web.Api
Мой авторизации на MVC App сделано как этот
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;
}
аутентификации выполняется вызов метода WebAPI
[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 метод выглядит следующим образом:
[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-приложением и службами WebApi. Моя авторизация и аутентификация работают на части MVC, но мои службы WebApi могут быть вызваны без этого авторизации/аутентификации. Как я могу защитить свой WebApi на основе моего примера? Я работаю около трех недель с MVC и WebApi, и многие вещи не очень ясны.
Должен ли я просто создавать GUID в общедоступном IHttpActionResult Login (User userModel) и проверять его каждый раз, когда вызывается метод? Как передать этот GUID в приложение MVC и от MVC до WebApi?
Я проверю это на несколько! Спасибо за ваш ответ! – CiucaS
Я принял ответ, я взял некоторые из вещей, которые вы опубликовали, и внесла некоторые изменения. Спасибо! – CiucaS
Приятно слышать, что вы нашли решение! Идеи, которые я опубликовал, из уже функционирующего более крупного проекта ... – ubi