Facebook 接続を使用して、ASP.NET MVC アプリケーションでユーザーを認証しようとしています。facebook access_token、facebook ユーザーの電子メールを取得し、次を使用してユーザーを認証するコントローラーを作成しました。
FormsAuthentication.SetAuthCookie(loggedUserEmail, true);
このすべての後、ユーザーをメインページにリダイレクトし、そこで User.Identity.Name を取得して、ログに記録されたユーザーの名前を表示しようとします (この場合は、私が推測する電子メールになります)。残念ながら、User.Identity.Name は null です。ただし、Request.IsAuthenticatedがtrueを返すため、認証プロセスは機能しているようです...
@if (Request.IsAuthenticated) {
<p>
@* ###THIS LINE THROWS EXCEPTION AS User.Identity.Names IS NULL### Hello, @Html.ActionLink(User.Identity.Name, "ChangePassword", "Account", routeValues: null, htmlAttributes: new { @class = "username", title = "Change password" })!*@
@Html.ActionLink("Log off", "LogOff", "Account")
</p>
}
User.Identity.Name が開始されない理由はありますか? ありがとう、
バート
PSの代わりに
FormsAuthentication.SetAuthCookie(loggedUserEmail, true);
私も試しました
var authCookie = FormsAuthentication.GetAuthCookie(loggedUserEmail, true);
var ticket = FormsAuthentication.Decrypt(authCookie.Value);
// We want to change the expiration of our forms authentication cookie
// to match the token expiration date, but you can also use your own expiration
DateTime expiration = ticket.IssueDate.AddSeconds(facebookTokenExpirationSeconds);
var newTicket = new FormsAuthenticationTicket(ticket.Version, ticket.Name,
ticket.IssueDate, expiration,
ticket.IsPersistent, facebookName);
// Encrypt the cookie again
authCookie.Value = FormsAuthentication.Encrypt(newTicket);
// Manually set it (instead of calling FormsAuthentication.SetAuthCookie)
Response.Cookies.Add(authCookie);
しかし、何も含まれていませんUser.Identity.Names
...