これまでに登録/ログインシステムを実装したことはありませんでしたので、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. リポジトリレベルのデータキャッシュを正しく実装する方法
- 3. linkedInのログインを正しく実装する方法は?
- 4. 角度2のカスタムコントロールを正しく実装する方法
- 5. libgdxを使ってダイアログボックスを正しく実装する方法
- 6. hook_views_pluginsを正しく実装する方法は?
- 7. asp.net mvc3、正しくサイドバーセクションを実装する方法?
- 8. runOnUiThreadを正しく実装する方法
- 9. 。約束を正しく実装する方法
- 10. カスタムAjaxを正しく実装する方法
- 11. 「__repr__」を正しく実装/オーバーロードする方法は?
- 12. MonetDBでAUTO_INCREMENTを正しく実装する方法は?
- 13. C2DMをAndroidに正しく実装する方法は?
- 14. FirebaseRecyclerAdapterでoverride getItem()メソッドを正しく実装する方法
- 15. Mongodb/Mongoose:エクスプレスルートでfindOneAndUpdateを正しく実装する方法
- 16. 固定サイドバーを正しく実装する方法は?
- 17. スイングでJavaでMVCを正しく実装する方法は?
- 18. 正しくmutableCopyWithZoneとcopyWithZoneを実装する方法
- 19. メテオjsでpublishとsubscribeを正しく実装する方法
- 20. Swiftでスタティックセルを正しく実装する方法3
- 21. javascriptでスライドアニメーションを正しく実装する方法は?
- 22. 正しくANTLR4訪問者を実装する方法
- 23. listview配列アダプタでフィルタリングを正しく実装する方法
- 24. Flip Animationでブートストラップカードを正しく実装する方法は?
- 25. Visual StudioでCodeLensを正しく実装する方法コード
- 26. Zobrist Hashingを正しく実装する
- 27. GetHashCodeを正しく実装する
- 28. CountDownTimerを正しく実装する
- 29. クラスを正しく実装する方法を教えてください。
- 30. ng-show正しい方法を実装する方法は?
うまくいけば、これはプロダクションコードにはなりませんか? – BrokenGlass
これはもちろん学習目的です。 –