私は最近他の人が以前に開発したサイトで作業を始めました。このサイトはasp.net上で動作していますが、私はC#をよく使っていますが、asp.netの仕組みについてはよく分かりません。adminがフォーム認証を持つユーザーとしてページを編集できるようにしますか?
私の目標は、ユーザーが詳細を編集しているときと同じツール&ページを使用して、管理者がユーザーの詳細を編集できるようにすることです。
Membership.GetUser() // returns currently logged in user
管理者ではなく、管理そのものを返すよりも、編集しようとしている正規ユーザーを返します。これは、この行があることでしょう。これが可能であれば、管理機能をサイトに追加するのは非常に簡単です。これが不可能な場合
、私はこの代わりのように見えるように自分のサイト上で様々な機能を書き換える必要があります:
MembershipUser user;
if (Roles.isUserInRole("admin")) {
user = Utility.GetTheUserTheAdminIsEditing();
}
else {
user = Membership.GetUser();
}
を、私はこのようにそれをしなければならない場合は、どのように私はUtility.GetTheUserTheAdminIsEditing()
を実装する必要がありますか?
private static bool _DoLogin(String user, String pass)
{
bool isAuthenticated = Membership.ValidateUser(user, pass.Trim());
if (isAuthenticated == true)
{
// Create the authentication ticket
FormsAuthenticationTicket authTicket = new
FormsAuthenticationTicket(1, // version
user, // user name
DateTime.Now, // creation
DateTime.Now.AddMinutes(60),// Expiration
false, // Persistent
""); // User data
// Now encrypt the ticket.
string encryptedTicket = FormsAuthentication.Encrypt(authTicket);
// Create a cookie and add the encrypted ticket to the
// cookie as data.
HttpCookie authCookie =
new HttpCookie(FormsAuthentication.FormsCookieName,
encryptedTicket);
// Add the cookie to the outgoing cookies collection.
HttpContext.Current.Response.Cookies.Add(authCookie);
FormsIdentity id = new FormsIdentity(authTicket);
// This principal will flow throughout the request.
System.Security.Principal.GenericPrincipal principal = new System.Security.Principal.GenericPrincipal(id, Roles.GetRolesForUser(user));
// Attach the new principal object to the current HttpContext object
HttpContext.Current.User = principal;
return true;
}
else
return false;
}
どのように私はこれを実装する必要があります。現時点では
は、このようなログイン機能はありますか?
おかげで管理リンクを隠すことができます。できるだけ別々の管理ページを作成しないようにしたい。複数のページにまたがるユーザーのための設定オプションがたくさんあるからだ。管理ページを作成した場合、この機能をすべてクローンする必要があり、サイトを維持するのが難しくなります。 – Oliver