Este documento descreve como criar um site web com funcionalidades de login e autenticação de utilizadores através da utilização de controlos como Login, LoginStatus e LoginView no ASP.NET, permitindo limitar o acesso a páginas, registar e alterar passwords de utilizadores.
1. .Net Apprentice
Membership e Login
Arquitectura de Sistemas
DEI-ISEP
Walkthrough: Creating a Web Site with Membership and User Login
http://msdn2.microsoft.com/en-us/library/879kf95c(VS.80).aspx
Membership e Login
Web Site Administration Tool
1
(C) Laboratório .NET do Departamento de
Engenharia Informática do ISEP/IPP 1
2. .Net Apprentice
Membership e Login
Membership e Login
Objectivos:
Criar página principal com link para login
LoginStatus control
Abrir página de login – Login.aspx
Login control
Validação do utilizador e regresso à página principal
com apresentação de sucesso na validação
LoginView control
Apresentação do nome do utilizador
LoginName control
Impedir acesso a páginas para utilizadores não
autenticados
Criar rules
2
Criar Web site IIS local
3
(C) Laboratório .NET do Departamento de
Engenharia Informática do ISEP/IPP 2
3. .Net Apprentice
Create a membership user
Asp.Net Configuration -> Security
Criar utilizador:
User name
Password
…
Método de acesso:
From the internet
From a local area network
Nota: A informação de membership é guardado por omissão no
Microsoft SQL Server Express , no folder App_Data
4
Set up access rules
Inserir regras de acesso para um dado
directório ( p.e. memberpages)
Utilizar Web Site Administration Tool
Security -> Create Access Rules
5
(C) Laboratório .NET do Departamento de
Engenharia Informática do ISEP/IPP 3
4. .Net Apprentice
Controlos de Login
Criar página com Login Button
Inserir controlo LoginStatus
Login
Este link referencia, por omissão, a página Login.aspx
Web.config – Form Authentication
<system.web>
<authentication mode="Forms" />
</system.web>
Criar página para fazer Login -> Login.aspx
Inserir controlo Login
6
Controlos de Login
Control Login:
Namespace: System.Web.UI.WebControls
Sintaxe:
[BindableAttribute(false)]
public class Login : CompositeControl
3 elementos obrigátorios:
user name único para identificar o utilizador
password para verificar a identidade do utilizador
button para enviar a informação ao servidor
Elementos opcionais:
link para relembrar password
help link para os utilizadores com problemas ao fazer login
Um link para registar novo utilizador
acção se o login foi bem sucedido
modo de esconder o control se o utilizador já estiver autenticado
Propriedade DestinationPageUrl: Destino se bem sucedido
Membership provider: default configurado no Web.config
Propriedade MembershipProvider permite alterar nome provider
OnAuthenticate permite alterar processo/method de autenticação
Etc.
7
(C) Laboratório .NET do Departamento de
Engenharia Informática do ISEP/IPP 4
5. .Net Apprentice
Controlos de Login
LoginStatus:
Namespace: System.Web.UI.WebControls
Sintaxe:
[BindableAttribute(false)]
public class LoginStatus : CompositeControl
Dois estados: logged ou logged out no Web site,
determinado pela propriedade IsAuthenticated da página.
Algumas Propriedades:
LogininimageUrl e LogoutimageUrl possibilitam alterar display
(texto ou image).
LogoutAction (Refresh, Redirect e RedirectToLoginPage)
LogoutPageUrl
Loging out “limpa” o “user's authentication status “ e quando
usado, as cookies do cliente
Este control possibilita a colocação de um link para a página
de login (login.aspx) caso o utilizador não tenha feito login
8
Controlos de Login
LoginName:
Namespace: System.Web.UI.WebControls
Sintaxe:
[BindableAttribute(false)]
public class LoginName : WebControl
Mostra o nome do utilizador na propriedade User da
class Page
Propriedade FormatString permite alterar texto a ser
visualizado
9
(C) Laboratório .NET do Departamento de
Engenharia Informática do ISEP/IPP 5
6. .Net Apprentice
Controlos de Login
Informação para utilizadores logged-in
Inserir um controlo LoginView
Informação com o nome do utilizador que fez
login
Inserir controlo LoginName
[username]
10
Controlos de Login
LoginView:
Namespace: System.Web.UI.WebControls
Sintaxe:
[BindableAttribute(false)]
[ThemeableAttribute(true)]
public class LoginView : Control, INamingContainer
Permite associar diferentes displays a diferentes
utilizadoresdepois de ser efectuada a autenticação
3 propriedades importantes:
AnonymousTemplate: define template a ser visualizado
pelos utilizadadores sem login
LoggedInTemplate: template ser visualizado pelos
utilizadores que não pertecem a nenhum Role groups
e que tenham efectuado login
RoleGroups: para definir os templates a ser
visualizados pelos utilizadores que tenham efectuado
login pertecentes a determinados grupos
11
(C) Laboratório .NET do Departamento de
Engenharia Informática do ISEP/IPP 6
7. .Net Apprentice
Rule access
Limitar acesso às páginas no directório
memberspages
Criar uma página members.aspx nesse
directorio
Criar um link para essa página ou escrever
endereço no browser
Utilizador será redirecionado para a página
Login.aspx
Uma vez validado com sucesso será
redireccionado para a página que tinha pedido
(Members.aspx)
12
Controlos de Login
Registar novo utilizador
Criar página register.aspx
Inserir controlo CreateUserWizard
Configurar propriedade ContinueDestinationPageUrl para
a página principal
13
(C) Laboratório .NET do Departamento de
Engenharia Informática do ISEP/IPP 7
8. .Net Apprentice
Controlos de Login
ChangePassword:
Namespace: System.Web.UI.WebControls
Sintaxe:
[BindableAttribute(false)]
public class ChangePassword : CompositeControl,
INamingContainer
Propriedade SuccessPageUrl
PasswordRecovery:
Namespace: System.Web.UI.WebControls
Sintaxe:
[BindableAttribute(false)]
public class PasswordRecovery : CompositeControl
14
class Membership
ValidateUser da class membership
public void Login_OnClick(object sender, EventArgs
args)
{
if (Membership.ValidateUser(UsernameTextbox.Text,
PasswordTextbox.Text))
FormsAuthentication.RedirectFromLoginPage(UsernameTe
xtbox.Text,
NotPublicCheckBox.Checked);
else
Msg.Text = "Login failed. Please check your user
name and password and try again.";
}
15
(C) Laboratório .NET do Departamento de
Engenharia Informática do ISEP/IPP 8
9. .Net Apprentice
// codigo html inserir password e username
<body>
<form id="form1" runat="server">
<h3>
Login</h3> <asp:Label id="Msg" runat="server" /><br
/>
Username: <asp:Textbox id="UsernameTextbox"
runat="server" /><br />
Password: <asp:Textbox id="PasswordTextbox"
runat="server" /><br />
<asp:Button id="LoginButton" Text="Login"
OnClick="Login_OnClick" runat="server" />
<asp:CheckBox id="NotPublicCheckBox" runat="server" />
Check here if this is <span >not</span> a public
computer. </form>
</body> </html>
16
class MembershipProvider
Alguns métodos
ValidateUser
CreateUser
DeleteUser
FindUsersByName
GetAllUsers
GetNumberOfUsersOnline
….
17
(C) Laboratório .NET do Departamento de
Engenharia Informática do ISEP/IPP 9