Usando as peças de GUID como ID
-
05-07-2019 - |
Pergunta
Estou desenvolvendo uma aplicação ASP .NET MVC. Uma das minhas ações requer id
como parâmetro. Por exemplo:
public actionresult Detail(Guid id){
return View();
}
Como você pode ver, eu estou usando Guid
vez de Int
. A questão é mais estética. O url pode ser muito longo, como localhost/Detail/0c157b42-379d-41d5-b9ba-83e9df9985b2
.
É seguro tomar apenas partes do Guid
como localhost/Detail/0c157b42
?
Solução
GUID é projetado de maneira tal que se destina a ser único, mas qualquer parte que não é. Consulte este post para mais detalhes. Se você precisa para encurtar o GUID tomar um bom hash-lo -. Como SHA-1 ou (se você não tem preocupações de segurança) MD5
Outras dicas
Não, não é seguro.
Você pode calcular um SHA-2 hash-lo embora, e tomar os primeiros caracteres do que isso.
Não, você precisa de todo o GUID já que há uma possibilidade de que um subconjunto pode não ser único.
Por exemplo:
0c157b42-379d-41d5-b9ba-83e9df9985b2
0c157b42-379d-41d5-b9ba-83e9df9985b3
Observe, apenas o último número é diferente. Os começos são a mesma coisa. Você não pode usar a extremidade traseira do GUID ou desde que não há nenhuma maneira de prever que parte do GUID vai mudar quando o seu criado.
Algumas outras opções para consi- * Se houver mais de um detalhes com GUIDs começando com 0c157b42, têm o localhost URL / Detalhe / 0c157b42 mostrar uma lista de aplicável detalhes objetos. * URL aliasing - permitir um campo "amigável URL" no objeto Detalhes
.Você pode limpar o GUID de -s e converter o HEX para Base32 (A-Z, 0-5), que vai encurtar a 16 caracteres.
Bit de uma resposta tardia, mas no caso de alguém lê este ...
dependendo do uso, você pode fornecido um valor GUID encurtado.
Por exemplo, se o valor ID é gerado e entregue ao usuário como um token de autenticação tipo de valor, em seguida, durante a geração você poderia simplesmente tomar no entanto muitos personagens e compará-lo com outros em valores de uso. Se nenhum jogos, em seguida, basta gerar um novo e re-comparar até o seu único.
Esta técnica também é aconselhável se você cortar um valor de hash do GUID também .. apenas para ser seguro. Na verdade, qualquer tempo que você gerar aleatoriamente um valor a ser usado como ID, então você deve se certificar de que não é 'já em uso'