2012-05-19 8 views
7

Sto lavorando a un progetto da utilizzare in un'azienda. Il sistema avrà solo 1 account amministratore.come lavorare con il progetto asp.net mvc che ha un solo utente

L'amministratore aggiungerà utenti di sistema e ciascun utente può creare i propri contatti.

Ho creato un servizio WCF per connettersi al database, un progetto asp.net mvc3 per l'amministratore e un'altra app WPF per gli utenti di sistema.

Le mie domande è:

Ho un solo utente (admin) di accedere con questo progetto MVC asp.net: come faccio a lavorare con questa situazione?

Penso che il provider di appartenenze e il database non siano richiesti perché sto lavorando solo con un utente, giusto ??

+1

Otterrete risposte migliori se fornite esempi di codice. – robrich

+3

@robrich perché hai bisogno di codice per queste domande? – tito11

+0

perchè giù voto ??? – tito11

risposta

8

Prova questa:

web.config:

<authentication mode="Forms"> 
    <forms loginUrl="~/Admin/LogOn" timeout="2880" > 
    <credentials passwordFormat="SHA1"> 
     <user name="admin" password="5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8"/> 
    </credentials> 
    </forms> 
</authentication> 

Formato password è impostata su SHA1, quindi La password non sarà visibile in chiaro. Tuttavia può ancora essere rotto. Ad esempio, genera il tuo hash utilizzando il generatore SHA1 online.

loginUrl è un percorso verso la tua pagina di accesso (duh: P), quindi cambialo se è diverso.

CredentialsViewModel:

public class CredentialsViewModel 
{ 
    [Required] 
    public string UserName { get; set; } 

    [Required] 
    [DataType(DataType.Password)] 
    public string Password { get; set; } 
} 

vista del modello per la visualizzazione di accesso.

AdminController:

public ViewResult LogOn() 
{ 
    return View(); 
} 

[HttpPost] 
public ActionResult LogOn(CredentialsViewModel model, string returnUrl) 
{ 
    if(ModelState.IsValid) 
    { 
     if(FormsAuthentication.Authenticate(model.UserName, model.Password)) 
     { 
      FormsAuthentication.SetAuthCookie(model.UserName, false); 
      return Redirect(returnUrl ?? Url.Action("Index", "Admin"));     
     } 
     else 
     { 
      ModelState.AddModelError("", "Incorrect username or password"); 
     } 
    } 

    return View(); 
} 

[Authorize] 
public ViewResult Index() 
{ 
    return View(); 
} 

Così azione accesso verrà autenticare le credenziali passate dal punto di vista; confrontalo con i dati di web.config.

Parte importante qui è l'attributo [Authorize] che impedisce l'accesso da parte di utenti non autorizzati.

+0

Funziona alla grande anche per più di un utente, purché le credenziali dell'utente siano impostate in pietra e non ci siano " t troppi. Grazie mille! – ElliotSchmelliot

0

Avrete sicuramente bisogno di una tabella utente per gestire gli account non di amministrazione. Sarebbe banale aggiungere anche l'utente Admin a questa tabella e aggiungere una colonna con l'etichetta "IsAdmin" dove solo quella è impostata su true. I provider di appartenenza e ruolo possono farlo in modo appropriato, e potrebbero essere più veloci a costruire ciò di cui hai bisogno, anche se tendono a sfondare tutto il tuo database.

.. come una nota a margine, anche se sei abbastanza sicuro che ci sarà sempre un solo account amministratore, ho il sospetto che il requisito cambierà alla fine, e probabilmente senza preavviso.

Problemi correlati