Pergunta

Eu tenho um backend comunidade existente e eu gosto de usar Umbraco para minha camada de apresentação. Como posso implementar login / logout com .Net autenticação de formulários? (Eu não quero usar a funcionalidade dos membros). Eu tenho vários tipos de usuários que acessam de chegar a diferentes tipos de páginas. Como posso controlar isso? controle do usuário?

Foi útil?

Solução

Umbraco usa o modelo de provedor de membro do ASP.NET / papel para ele do sistema de afiliação, e é um passo bastante simples para trocar a um padrão fora para sua própria implementação. Eu fiz isso no passado onde eu queria para autenticar membros contra uma loja de Active Directory, mas não posso imaginar que seja muito mais difícil para autenticar contra um banco de dados personalizado.

O benefício disso é que você começa a total integração com o sistema de afiliação Umbraco, e usando um provedor de função personalizada, os editores serão capazes de restringir páginas usando o construído em instalações de página de edição ao invés de você ter que ligar na sua controles própria segurança.

Você deve ser capaz de criar um provedor de associação simples através do alargamento do UmbracoMembershipProvider classe e substituindo o ValidateUser método. Eu não fiz isso sozinho, mas eu sei de outros que têm.

Para autenticar contra um provedor de função personalizada, você precisa criar uma classe derivada de RoleProvider . Os métodos que você vai estar interessado em substituir são -. IsUserInRole , FindUsersInRole , GetAllRoles e GetRolesForUser

Aqui está um link para um Scott Guthrie blogue post que tem mais informações sobre a API do provedor do que você realmente precisa saber, incluindo o código fonte para os provedores padrão.

Outras dicas

Eu usei duas abordagens em meus locais umbraco. Ambas as abordagens incluem controles de usuário para login e logout do que são responsáveis ??pela autenticação de um usuário com uma solução personalizada e limpar credenciais respectivamente. Eu também adicionar, para ambas as abordagens, um atributo umbracoMembersOnly a quaisquer tipos de documentos que eu quero proteger.

Na primeira abordagem, tive cada cheque modelo individual para ver se o usuário foi impedida de acesso. Abstrair isso, criei uma classe siteuser com um método IsMember ou isLoggedIn que estava disponível de site de largura e pode ser chamado a partir de qualquer um XSLT ou User Control macro. A vantagem dessa abordagem é que eu poderia mensagens personalizadas sob medida em cada modelo em vez de simplesmente fornecendo o mesmo acesso negado página.

A segunda abordagem - que é o que eu favorecer agora - se para criar uma macro Permissões que é responsável por verificar o direito do usuário para acessar qualquer página (ou seja, verifica a existência de um atributo umbracoMembersOnly e, se for verdade, os cheques para uma variável de sessão ). Esta macro é incluído no modelo mestre, e assim executa em cada modelo. Se o usuário não tem permissão para acessar a página atual, eu redirecionar para a mesma página, mas com um? Alttemplate = RestrictedPage ou similar anexada à string de consulta. (Certifique-se de que as suas permissões macro verifica para um alttemplate = RestrictedPage na cadeia de consulta, ou você vai acabar em um loop infinito de redirecionamentos.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top