簡単なユーザー認証機能を作ろうとしているのですが、うまくいきません。ここに私が取り組んでいるコードがあります:
public class LoginController : ApiController
{
private void SetPrincipal(IPrincipal principal)
{
Thread.CurrentPrincipal = principal;
if (HttpContext.Current != null)
{
HttpContext.Current.User = principal;
}
}
public bool Login(string token)
{
//Check token
if (.....)
{
//Authenticate user
var identity = new GenericIdentity("Test user");
SetPrincipal(new GenericPrincipal(identity, new string[]{"Test role"}));
}
}
[Authorize]
public string TestFun()
{
return "Hello " + User.Identity.Name;
}
}
そのため、最初にメソッドを呼び出そうとするとTestFun()
、エラー コード 401 が返されます。ただし、メソッドを呼び出すとLogin()
、ユーザーの資格情報が何らかの形で保存されるはずですが、ここで迷子になり、機能しません。
TestFun()
Login()
最初に呼び出しても、常にエラー コード 401 が返されます。関数に入れようとするとreturn "Hello " + User.Identity.Name;
、Login()
正しいユーザー名が返されますがTestFun()
、ユーザーは利用できません。
Sessions と FormsAuthentication を使用してみましたが、この非常に単純な例でも機能しません。
誰かが私に何が欠けているか教えてもらえますか?
ありがとう!