これまでに登録/ログインシステムを実装したことはありませんでしたので、C#/ ASP.NET(ASP.NETの内蔵機能を使用していません。メンバーシッププロバイダ)。私が少し不明なのは、セッション中またはセッション間にユーザーをログインさせ続けるためにセッション/クッキーを利用する方法です。あなたは、ユーザーが要求したが、原因認証に訪問することができませんでしたか、ユーザーがあなたにリダイレクトされる場所の制御を維持したい場合はSetAuthCookieセッション用のユーザシステムを正しく実装する方法
答えて
そのを使用することができますページにリダイレクトするRedirectFromLoginを使用することができます
protected void Login_User(object sender, EventArgs e)
{
string username = usernameField.Text;
string password = passwordField.Text;
User user = UserRepository.FindUser(username);
if (user != null)
{
if (user.Password.Equals(Hash(password)))
{
// How do I properly login the user and keep track of his session?
}
else
Response.Write("Wrong password!");
}
else
Response.Write("User does not exist!");
}
どこでHttpContext.Current.Userを再割り当てしますか? global.asaxでApplication_AuthenticateRequestイベントを使用して各リクエストを確認しようとしましたが、セッションはこのイベントに存在しません。 – TDaver
私はPostAuthenticateRequest(global.asax)で割り当てます。単にHttpContext.Current.User =新しいWebUser(...)を入力します。セッションに割り当てる必要はありません – Bonshington
適切なログインシステムにはかなり複雑です。
- はSystem.Security.Principal.IPrincipal
- 割り当てIPrincipal誘導体
- System.Web.HttpConext.Current.User にSystem.Security.Principal.IIdentity inherrit別のクラスを継承するクラスを作成しますクッキーを使用したくない場合は、IPrincipalをSessionに配置してください。
- HttpContext.Current.Userが失われた場合、セッションからの取得(最初のイベント、たとえばpage_init)によって再割り当てします。私のコードのために、私はクッキーとしてFormsAuthenticationTicketを使用し、イベントにGlobal.asaxのに再割り当てPostAuthenticateRequest
HttpContext.Current.Userを使用しての良いところは、uはmethod属性をマークすることができます。
[Authorize] // authorized user only
public void btn_click(...){...}
iは、通常のasp.netのためかわからないが、それは
をuはSystem.Web.Securitiy.FormsAuthenticationTicketを試し、クッキーを使用する場合は、ASP MVC
に非常によく働くとをFormsAuthenticationサンプル
public class WebUser:System.Security.Principal.IPrincipal
{
...
public System.Security.Principal.IIdentity Identity{get; private set;}
public WebUser(...)
{
this.Identity = new WebIdentity(...);
HttpContext.Current.User = this;
}
}
public class WebIdentity : System.Security.Principal.IIdentity
{
...
}
public void Login(...)
{
var newUser = new WebUser(...);
}
使用この:
public class FormsAuthenticationService
{
public void SignIn(string userName, bool createPersistentCookie)
{
if (String.IsNullOrEmpty(userName)) throw new ArgumentException("Value cannot be null or empty.", "userName");
FormsAuthentication.SetAuthCookie(userName, createPersistentCookie);
}
public void SignOut()
{
FormsAuthentication.SignOut();
}
}
- 1. 不正防止レイヤーを正しく実装する方法
- 2. linkedInのログインを正しく実装する方法は?
- 3. libgdxを使ってダイアログボックスを正しく実装する方法
- 4. asp.net mvc3、正しくサイドバーセクションを実装する方法?
- 5. カスタムAjaxを正しく実装する方法
- 6. 固定サイドバーを正しく実装する方法は?
- 7. スイングでJavaでMVCを正しく実装する方法は?
- 8. 「__repr__」を正しく実装/オーバーロードする方法は?
- 9. 正しくmutableCopyWithZoneとcopyWithZoneを実装する方法
- 10. javascriptでスライドアニメーションを正しく実装する方法は?
- 11. hook_views_pluginsを正しく実装する方法は?
- 12. C2DMをAndroidに正しく実装する方法は?
- 13. GetHashCodeを正しく実装する
- 14. Zobrist Hashingを正しく実装する
- 15. CountDownTimerを正しく実装する
- 16. クラスを正しく実装する方法を教えてください。
- 17. ng-show正しい方法を実装する方法は?
- 18. DialogPreferenceサブクラスに対してonRestoreInstanceState()を正しく実装する方法は?
- 19. 優先キューのヒープ実装を正しく修正する
- 20. HttpContextでセッションを正しく設定する方法は?
- 21. GoでMongoDBセッションを正しく操作する方法は?
- 22. CUDAでexecute-function-on-each-elementを正しく実装する方法は?
- 23. Core Data仮想属性を正しく実装する方法は?
- 24. Windows DLLでスリープスレッドを正しく実装して閉じる方法
- 25. JPAセッションと同時にGetOrCreateを実装する方法は?
- 26. カプセル化を実装する正しい方法
- 27. カスタムポップアップtkinterダイアログボックスを実装する正しい方法
- 28. ユーザーログインシステムを実装する正しい方法
- 29. Authorize.net PHPでAIMメソッドを実装する正しい方法は?
- 30. DAOクラスを実装する正しい方法は?
うまくいけば、これはプロダクションコードにはなりませんか? – BrokenGlass
これはもちろん学習目的です。 –