2011-11-10 15 views
0

私は最近他の人が以前に開発したサイトで作業を始めました。このサイトは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; 
} 

どのように私はこれを実装する必要があります。現時点では

は、このようなログイン機能はありますか?

答えて

1

すべてのユーザーのリストで管理者ページ(彼にしか見えません)を作成し、管理者がそれらを編集することができます。

あなたはこの線でそのフォルダ内のweb.configファイルを作成し、あなたのサイトに新しいフォルダにこの管理ページを置くことができます:

<system.web> 
<authorization> 

<allow roles="Admin"/> //Allows users in Admin role 
<deny users="*"/> // deny everyone else 

</authorization> 
</system.web> 

それとも、メインweb.configファイルにこれを追加することができ

<location path="AdminFolder"> 

    <system.web> 
    <authorization> 

    <allow roles="Admin"/> //Allows users in Admin role 
    <deny users="*"/> // deny everyone else 

    </authorization> 
    </system.web> 

</location> 

、あるいは、あなたは単に\あなたのコメントについてRoles.isUserInRole("admin"))

+0

おかげで管理リンクを隠すことができます。できるだけ別々の管理ページを作成しないようにしたい。複数のページにまたがるユーザーのための設定オプションがたくさんあるからだ。管理ページを作成した場合、この機能をすべてクローンする必要があり、サイトを維持するのが難しくなります。 – Oliver

関連する問題