この質問は、タスクを実行するための最良の方法を見つけるのに苦労しているため、構造/設計に関する質問です。
私のMVCアプリでは、ログイン情報プロバイダーとしてDotNetOpenAuth(3.4)を使用しておりFormsAuthentication
、Cookieなどの標準を使用しています。
DB内の現在のユーザーテーブルには次のものがあります。
- UserId(PK、uniqueidentifier)
- OpenIdIdentifier(nvarchar(255))
- OpenIdDisplay(nvarchar(255))
- 表示名(nvarchar(50))
- メール(nvarchar(50))
- 電話番号(nvarchar(50))
UserIdはユーザーの明確な識別子であるため(後日、OpenIdプロバイダーを変更できるようになるはずです)、他のテーブルが(ユーザーの場合)リンクするキーです。
これは現在のコードであり、認証が成功すると、一時的なユーザーが作成され、アクションの作成にリダイレクトされます。
switch (response.Status)
{
case AuthenticationStatus.Authenticated:
FormsAuthentication.SetAuthCookie(response.ClaimedIdentifier, false);
var users = new UserRepository();
if (!users.IsOpenIdAssociated(response.ClaimedIdentifier))
{
var newUser = new DueDate.Models.User();
newUser.OpenIdIdentifer = response.ClaimedIdentifier;
newUser.OpenIdDisplay = response.FriendlyIdentifierForDisplay;
TempData["newUser"] = newUser;
return this.RedirectToAction("Create");
}
そして今、質問の核心について:
response.ClaimedIdentifier
ユーザーに対して保存する正しい情報はありますか?FormAuthentication.SetAuthCookie
フォーム認証に適した方法はありますか?それとももっと良い方法はありますか?SetAuthCookieを呼び出すと、を除いてユーザーに関連するデータはありません
ClaimedIdentifier
。私が一貫して彼らを参照している場合は、ユーザーを作成し、それを?の代わりにCookieにUserId
保存することをお勧めします。UserId
ClaimedIdentifier
そのUserIdをさまざまな場所で使用している場合、Cookieから取得するか、より論理的で便利な場所に保存するにはどうすればよいですか?
少し長蛇の列ができましたが、これを行うための最善の方法を見つけるのに苦労しています/