Cercando di gestire l'accesso a un sito web che ho creato alcune entità necessarie È sicuro utilizzare la riflessione e le enumerazioni per il controllo logico dell'accesso alle applicazioni MVC?
L'obiettivo è quello di utilizzare un attributo personalizzato per il permesso metodo di azione alcuni del controller della mia applicazione MVC.
[Permissions(PermissionType.SomePermissionName, CrudType.CanDelete)]
public ActionResult SomeAction()
{
}
Per questa operazione ho due enumerazioni
[Flags]
public enum CrudType
{
CanCreate = 0x1,
CanRead = 0x2,
CanUpdate = 0x4,
CanDelete = 0x8,
}
[Flags]
public enum PermissionType
{
SomePermissionName = 0x1,
//...
}
ora voglio il metodo seguito per controllare i permessi
public static bool CanAccess(RolePermissions rp, CrudType crudType)
{
var pInfo = rp.GetType().GetProperties();
var res = pInfo.FirstOrDefault(x => x.Name == crudType.ToString());
if(res != null)
{
return Convert.ToBoolean(res.GetValue(rp, null));
}
return false;
}
Funziona bene ma è sicuro da usare riflessione qui? È un buon stile?
Un'altra domanda riguarda tale pezzo di codice
var permission = PermissionService.GetByName(permissionType.ToString());
Qui sto cercando di ottenere il permesso di un oggetto da un database utilizzando alcuni denominato costante dal PermissionType
enum.
In entrambi i casi il lavoro corretto dipende dalle relazioni tra enumerazione e alcuni campi o record di tabella. Dall'altro lato ho un buon meccanismo di controllo della logica (come mi sembra). È un buon modo?
Non è disponibile in ASP.NET Membership APi? –
Non mi piace davvero l'iscrizione.Inoltre mi piacerebbe usare le mie classi, le proprie tabelle, il proprio controllo, ecc. – Shymep
Qualsiasi motivo non ti piace, oltre alle proprie classi, alle proprie tabelle, ai propri controlli? Mentre stavo pensando di passare a Membership APi :( –