Chapter 8: Authentication"

From Documentation
Line 11: Line 11:
  
 
= Authentication =
 
= Authentication =
 +
Authentication is the process to identify a user, and requesting an account and a password is a common way. Our login page also use a template zul to keep a consistent style with index page. But it has no sidebar because users without login should not access main functions.
 +
 +
'''/chapter8/layout/template-anonymous.zul'''
 +
<source lang='xml' high='7'>
 +
<zk>
 +
<!-- free to access template, without sidebar  -->
 +
<borderlayout hflex="1" vflex="1">
 +
<north height="100px" border="none" >
 +
<include src="/chapter8/layout/banner.zul"/>
 +
</north>
 +
<center id="mainContent" autoscroll="true" border="none" self="@insert(content)">
 +
<!-- the main content will be insert to here -->
 +
</center>
 +
<south height="50px" border="none">
 +
<include src="/chapter3/footer.zul"/>
 +
</south>
 +
</borderlayout>
 +
</zk>
 +
</source>
 +
* Line 7: Define an anchor named <tt>content</tt>
 +
 +
 +
Login form is built with ''Grid''.
 +
 +
<source lang='xml' high='3, 5, 24'>
 +
<?link rel="stylesheet" type="text/css" href="/style.css"?>
 +
<!-- it is a login page, no authentication protection and use anonymous template -->
 +
<?init class="org.zkoss.zk.ui.util.Composition" arg0="/chapter8/layout/template-anonymous.zul"?>
 +
<zk>
 +
<hbox self="@define(content)" vflex="1" hflex="1" align="center"
 +
pack="center" spacing="20px">
 +
<vlayout>
 +
<window id="loginWin"
 +
apply="org.zkoss.tutorial.chapter8.LoginController"
 +
title="Login with you name" border="normal" hflex="min">
 +
<vbox hflex="min" align="center">
 +
<grid hflex="min">
 +
<columns>
 +
<column hflex="min" align="right" />
 +
<column />
 +
</columns>
 +
<rows>
 +
<row>
 +
Account :
 +
<textbox id="account" width="200px" />
 +
</row>
 +
<row>
 +
Password :
 +
<textbox id="password" type="password"
 +
width="200px" />
 +
</row>
 +
</rows>
 +
</grid>
 +
<label id="message" sclass="warn" value="&#160;" />
 +
<button id="login" label="Login" />
 +
 +
</vbox>
 +
</window>
 +
(use account='zkoss' and password='1234' to login)
 +
</vlayout>
 +
</hbox>
 +
</zk>
 +
</source>
 +
* Line 3: Apply a template zul with <tt>&lt;?init ?&gt;</tt>.
 +
* Line 5: Define a fragment to be inserted in the anchor <tt>content</tt>.
 +
* Line 24: Specify "password" at <tt>type</tt>, then input will be masked.
 +
 +
  
 
== Session ==
 
== Session ==
  
 
== Logout ==
 
== Logout ==
 
 
  
 
= Secure Your Pages =
 
= Secure Your Pages =
 
Security is an important issue that every developer must consider for a web application since users can enter any URL in a browser to access any resource. Even though you have created a login page for authentication, but a user can bypass the login page and access the index page after login if he knows the page's URL. Therefore, we should apply a mechanism to protect zul pages from illegal access. ZK allows you to [[ZK Developer%27s Reference/UI Patterns/Page Initialization| initialize a zul page]] by implement a <javadoc>org.zkoss.zk.ui.util.Initiator</javadoc>. When we apply an <tt>Initiator</tt> to a zul, ZK will use it to perform initialization before creating components upon a zul. We can create a initiator to check user's
 
Security is an important issue that every developer must consider for a web application since users can enter any URL in a browser to access any resource. Even though you have created a login page for authentication, but a user can bypass the login page and access the index page after login if he knows the page's URL. Therefore, we should apply a mechanism to protect zul pages from illegal access. ZK allows you to [[ZK Developer%27s Reference/UI Patterns/Page Initialization| initialize a zul page]] by implement a <javadoc>org.zkoss.zk.ui.util.Initiator</javadoc>. When we apply an <tt>Initiator</tt> to a zul, ZK will use it to perform initialization before creating components upon a zul. We can create a initiator to check user's

Revision as of 04:16, 30 January 2013

Target Application

In this chapter, we will demonstrate how to implement authentication and protect your pages from illegal access. We will create a login page without sidebar as follows:

Tutorial-ch8-login.png


After login, we redirect users to index page with user name appeared at right side of the header.

Tutorial-ch8-index.png

Authentication

Authentication is the process to identify a user, and requesting an account and a password is a common way. Our login page also use a template zul to keep a consistent style with index page. But it has no sidebar because users without login should not access main functions.

/chapter8/layout/template-anonymous.zul

<zk>
	<!-- free to access template, without sidebar  -->
	<borderlayout hflex="1" vflex="1">
		<north height="100px" border="none" >
			<include src="/chapter8/layout/banner.zul"/>
		</north>
		<center id="mainContent" autoscroll="true" border="none" self="@insert(content)">
			<!-- the main content will be insert to here -->
		</center>
		<south height="50px" border="none">
			<include src="/chapter3/footer.zul"/>
		</south>
	</borderlayout>
</zk>
  • Line 7: Define an anchor named content


Login form is built with Grid.

<?link rel="stylesheet" type="text/css" href="/style.css"?>
<!-- it is a login page, no authentication protection and use anonymous template -->
<?init class="org.zkoss.zk.ui.util.Composition" arg0="/chapter8/layout/template-anonymous.zul"?>
<zk>
	<hbox self="@define(content)" vflex="1" hflex="1" align="center"
		pack="center" spacing="20px">
		<vlayout>
			<window id="loginWin"
				apply="org.zkoss.tutorial.chapter8.LoginController"
				title="Login with you name" border="normal" hflex="min">
				<vbox hflex="min" align="center">
					<grid hflex="min">
						<columns>
							<column hflex="min" align="right" />
							<column />
						</columns>
						<rows>
							<row>
								Account :
								<textbox id="account" width="200px" />
							</row>
							<row>
								Password :
								<textbox id="password" type="password"
									width="200px" />
							</row>
						</rows>
					</grid>
					<label id="message" sclass="warn" value="&#160;" />
					<button id="login" label="Login" />
					
				</vbox>
			</window>
			(use account='zkoss' and password='1234' to login)
		</vlayout>
	</hbox>
</zk>
  • Line 3: Apply a template zul with <?init ?>.
  • Line 5: Define a fragment to be inserted in the anchor content.
  • Line 24: Specify "password" at type, then input will be masked.


Session

Logout

Secure Your Pages

Security is an important issue that every developer must consider for a web application since users can enter any URL in a browser to access any resource. Even though you have created a login page for authentication, but a user can bypass the login page and access the index page after login if he knows the page's URL. Therefore, we should apply a mechanism to protect zul pages from illegal access. ZK allows you to initialize a zul page by implement a Initiator. When we apply an Initiator to a zul, ZK will use it to perform initialization before creating components upon a zul. We can create a initiator to check user's