私は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アプリケーションとWebApiサービスをどのように接続できますか。私の認可と認証はMVCの部分で動作しますが、私のWebApiサービスはこの許可/認証なしで呼び出すことができます。私の例に基づいてWebApiを保護するにはどうすればよいですか?私はMVCとWebApiで約3週間働いていて、多くのことはあまりにも私にはあまり明らかではありません。
public IHttpActionResult Login(User userModel)でGUIDを作成し、メソッドが呼び出されるたびにそれをチェックするだけでよいですか?このGUIDをMVC Appに渡し、MVCからWebApiに渡すにはどうすればよいですか?
いくつか試してみましょう!あなたの答えをありがとう! – CiucaS
私は答えを受け入れました。あなたが投稿したことのいくつかを取り上げ、いくつか修正しました。ありがとうございました! – CiucaS
あなたが解決策を見つけたことをよく聞いてください!私が投稿したアイデアは既に機能している大きなプロジェクトから来たものです... – ubi