Sophie

Sophie

distrib > Fedora > 18 > x86_64 > by-pkgid > b3a1f4d91c26f535919e39e25606614a > files > 1072

wt-doc-3.2.3-1.fc18.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Wt: Wt::Auth::PasswordService Class Reference</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />

<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>

</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">Wt
   &#160;<span id="projectnumber">3.2.3</span>
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.5.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="namespaceWt.html">Wt</a>      </li>
      <li class="navelem"><a class="el" href="namespaceWt_1_1Auth.html">Auth</a>      </li>
      <li class="navelem"><a class="el" href="classWt_1_1Auth_1_1PasswordService.html">PasswordService</a>      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a>  </div>
  <div class="headertitle">
<div class="title">Wt::Auth::PasswordService Class Reference<div class="ingroups"><a class="el" href="group__auth.html">Authentication module (Wt::Auth)</a></div></div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="Wt::Auth::PasswordService" --><!-- doxytag: inherits="Wt::Auth::AbstractPasswordService" -->
<p>Password authentication service.  
 <a href="classWt_1_1Auth_1_1PasswordService.html#details">More...</a></p>

<p><code>#include &lt;Wt/Auth/PasswordService&gt;</code></p>
<div class="dynheader">
Inheritance diagram for Wt::Auth::PasswordService:</div>
<div class="dyncontent">
<div class="center"><img src="classWt_1_1Auth_1_1PasswordService__inherit__graph.png" border="0" usemap="#Wt_1_1Auth_1_1PasswordService_inherit__map" alt="Inheritance graph"/></div>
<map name="Wt_1_1Auth_1_1PasswordService_inherit__map" id="Wt_1_1Auth_1_1PasswordService_inherit__map">
<area shape="rect" href="classWt_1_1Auth_1_1AbstractPasswordService.html" title="Abstract password authentication service." alt="" coords="5,5,235,32"/></map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>

<p><a href="classWt_1_1Auth_1_1PasswordService-members.html">List of all members.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1PasswordService_1_1AbstractVerifier.html">AbstractVerifier</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Abstract password hash computation and verification class.  <a href="classWt_1_1Auth_1_1PasswordService_1_1AbstractVerifier.html#details">More...</a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1PasswordService.html#a7afc5128d074aa3b63d4875b11f37cbf">PasswordService</a> (const <a class="el" href="classWt_1_1Auth_1_1AuthService.html">AuthService</a> &amp;baseAuth)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="#a7afc5128d074aa3b63d4875b11f37cbf"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a782710946fc8e990b630d6dd73d95d31"></a><!-- doxytag: member="Wt::Auth::PasswordService::~PasswordService" ref="a782710946fc8e990b630d6dd73d95d31" args="()" -->
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1PasswordService.html#a782710946fc8e990b630d6dd73d95d31">~PasswordService</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af7d495e925abcf2f136f3058b8bd349a"></a><!-- doxytag: member="Wt::Auth::PasswordService::baseAuth" ref="af7d495e925abcf2f136f3058b8bd349a" args="() const " -->
virtual const <a class="el" href="classWt_1_1Auth_1_1AuthService.html">AuthService</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1PasswordService.html#af7d495e925abcf2f136f3058b8bd349a">baseAuth</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the basic authentication service. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1PasswordService.html#a76933208fb6cbf7218d5acc0b1d5457c">setVerifier</a> (<a class="el" href="classWt_1_1Auth_1_1PasswordService_1_1AbstractVerifier.html">AbstractVerifier</a> *verifier)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets a password verifier which computes authorization checks.  <a href="#a76933208fb6cbf7218d5acc0b1d5457c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classWt_1_1Auth_1_1PasswordService_1_1AbstractVerifier.html">AbstractVerifier</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1PasswordService.html#a3dbfe96f9b1d0215e1c4041814699b89">verifier</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the password verifier.  <a href="#a3dbfe96f9b1d0215e1c4041814699b89"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1PasswordService.html#ad15e73d283f21690d56efc2a8d8c6d98">setStrengthValidator</a> (AbstractStrengthValidator *validator)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets a validator which computes password strenght.  <a href="#ad15e73d283f21690d56efc2a8d8c6d98"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual AbstractStrengthValidator *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1PasswordService.html#ae062b2d5d9d6374a54e3c4e85310a413">strengthValidator</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the password strength validator.  <a href="#ae062b2d5d9d6374a54e3c4e85310a413"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1PasswordService.html#ad34f849188b771b47ed09e2362b548a5">setAttemptThrottlingEnabled</a> (bool enabled)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Configures password attempt throttling.  <a href="#ad34f849188b771b47ed09e2362b548a5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1PasswordService.html#a6859552454b12121dc164690dca5e27a">attemptThrottlingEnabled</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether password attempt throttling is enabled.  <a href="#a6859552454b12121dc164690dca5e27a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1PasswordService.html#ad37117a366dcc43f25d245181dac732f">delayForNextAttempt</a> (const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> &amp;user) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the delay for this user for a next authentication attempt.  <a href="#ad37117a366dcc43f25d245181dac732f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="group__auth.html#ga001a66930b52328e78649572d6922bcc">PasswordResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1PasswordService.html#afcac6c444116aa7e76bafded3516ff7c">verifyPassword</a> (const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> &amp;user, const <a class="el" href="classWt_1_1WString.html">WString</a> &amp;password) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Verifies a password for a given user.  <a href="#afcac6c444116aa7e76bafded3516ff7c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1PasswordService.html#aa1cde5c463721c4373c0bf53edf3aaa1">updatePassword</a> (const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> &amp;user, const <a class="el" href="classWt_1_1WString.html">WString</a> &amp;password) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets a new password for the given user.  <a href="#aa1cde5c463721c4373c0bf53edf3aaa1"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1Auth_1_1PasswordService.html#a4a6d9ee1be85e768da385e2a2554c928">getPasswordThrottle</a> (int failedAttempts) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns how much throttle should be given considering a number of failed authentication attempts.  <a href="#a4a6d9ee1be85e768da385e2a2554c928"></a><br/></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Password authentication service. </p>
<p>This class implements password authentication.</p>
<p>Like all <b>service classes</b>, this class holds only configuration state. Thus, once configured, it can be safely shared between multiple sessions since its state (the configuration) is read-only. A "const PasswordService" object is thus thread-safe.</p>
<p>Passwords are (usually) saved in the database using salted hash functions. The process of computing new hashes, and verifying them is delegated to an <a class="el" href="classWt_1_1Auth_1_1PasswordService_1_1AbstractVerifier.html" title="Abstract password hash computation and verification class.">AbstractVerifier</a>.</p>
<p>The authentication class may be configured to enable password attempt throttling. This provides protection against brute force guessing of passwords. When throttling is enabled, new password attempts are refused until the throttling period is finished.</p>
<p>Password strength validation of a new user-chosen password may be implemented by setting an AbstractStrengthValidator. </p>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a7afc5128d074aa3b63d4875b11f37cbf"></a><!-- doxytag: member="Wt::Auth::PasswordService::PasswordService" ref="a7afc5128d074aa3b63d4875b11f37cbf" args="(const AuthService &amp;baseAuth)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Wt::Auth::PasswordService::PasswordService </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classWt_1_1Auth_1_1AuthService.html">AuthService</a> &amp;&#160;</td>
          <td class="paramname"><em>baseAuth</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Constructor. </p>
<p>Creates a new password authentication service, which depends on the passed basic authentication service. </p>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a6859552454b12121dc164690dca5e27a"></a><!-- doxytag: member="Wt::Auth::PasswordService::attemptThrottlingEnabled" ref="a6859552454b12121dc164690dca5e27a" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool Wt::Auth::PasswordService::attemptThrottlingEnabled </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns whether password attempt throttling is enabled. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classWt_1_1Auth_1_1PasswordService.html#ad34f849188b771b47ed09e2362b548a5" title="Configures password attempt throttling.">setAttemptThrottlingEnabled()</a> </dd></dl>

<p>Implements <a class="el" href="classWt_1_1Auth_1_1AbstractPasswordService.html#aad7d1fa56e35cfcca72b8028b6d4421e">Wt::Auth::AbstractPasswordService</a>.</p>

</div>
</div>
<a class="anchor" id="ad37117a366dcc43f25d245181dac732f"></a><!-- doxytag: member="Wt::Auth::PasswordService::delayForNextAttempt" ref="ad37117a366dcc43f25d245181dac732f" args="(const User &amp;user) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int Wt::Auth::PasswordService::delayForNextAttempt </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> &amp;&#160;</td>
          <td class="paramname"><em>user</em></td><td>)</td>
          <td> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the delay for this user for a next authentication attempt. </p>
<p>If password attempt throttling is enabled, then this returns the number of seconds this user must wait for a new authentication attempt, presumably because of a number of failed attempts.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classWt_1_1Auth_1_1AbstractPasswordService.html#aad7d1fa56e35cfcca72b8028b6d4421e" title="Returns whether password attempt throttling is enabled.">attemptThrottlingEnabled()</a> </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classWt_1_1Auth_1_1PasswordService.html#ad34f849188b771b47ed09e2362b548a5" title="Configures password attempt throttling.">setAttemptThrottlingEnabled()</a>, <a class="el" href="classWt_1_1Auth_1_1PasswordService.html#a4a6d9ee1be85e768da385e2a2554c928" title="Returns how much throttle should be given considering a number of failed authentication attempts...">getPasswordThrottle()</a> </dd></dl>

<p>Implements <a class="el" href="classWt_1_1Auth_1_1AbstractPasswordService.html#a48f8ad7a03a224e00ee7a8620b9dafa8">Wt::Auth::AbstractPasswordService</a>.</p>

</div>
</div>
<a class="anchor" id="a4a6d9ee1be85e768da385e2a2554c928"></a><!-- doxytag: member="Wt::Auth::PasswordService::getPasswordThrottle" ref="a4a6d9ee1be85e768da385e2a2554c928" args="(int failedAttempts) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int Wt::Auth::PasswordService::getPasswordThrottle </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>failedAttempts</em></td><td>)</td>
          <td> const<code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns how much throttle should be given considering a number of failed authentication attempts. </p>
<p>The returned value is in seconds.</p>
<p>The default implementation returns the following:</p>
<ul>
<li>failedAttempts == 0: 0</li>
<li>failedAttempts == 1: 1</li>
<li>failedAttempts == 2: 5</li>
<li>failedAttempts == 3: 10</li>
<li>failedAttempts &gt; 3: 25 </li>
</ul>

</div>
</div>
<a class="anchor" id="ad34f849188b771b47ed09e2362b548a5"></a><!-- doxytag: member="Wt::Auth::PasswordService::setAttemptThrottlingEnabled" ref="ad34f849188b771b47ed09e2362b548a5" args="(bool enabled)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Wt::Auth::PasswordService::setAttemptThrottlingEnabled </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>enabled</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Configures password attempt throttling. </p>
<p>When password throttling is enabled, new password verification attempts will be refused when the user has had too many unsuccessful authentication attempts in a row.</p>
<p>The exact back-off schema can be customized by specializing <a class="el" href="classWt_1_1Auth_1_1PasswordService.html#a4a6d9ee1be85e768da385e2a2554c928" title="Returns how much throttle should be given considering a number of failed authentication attempts...">getPasswordThrottle()</a>. </p>

</div>
</div>
<a class="anchor" id="ad15e73d283f21690d56efc2a8d8c6d98"></a><!-- doxytag: member="Wt::Auth::PasswordService::setStrengthValidator" ref="ad15e73d283f21690d56efc2a8d8c6d98" args="(AbstractStrengthValidator *validator)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Wt::Auth::PasswordService::setStrengthValidator </td>
          <td>(</td>
          <td class="paramtype">AbstractStrengthValidator *&#160;</td>
          <td class="paramname"><em>validator</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Sets a validator which computes password strenght. </p>
<p>The default password strenght validator is <code>0</code>.</p>
<p>The service takes ownership of the validator. </p>

</div>
</div>
<a class="anchor" id="a76933208fb6cbf7218d5acc0b1d5457c"></a><!-- doxytag: member="Wt::Auth::PasswordService::setVerifier" ref="a76933208fb6cbf7218d5acc0b1d5457c" args="(AbstractVerifier *verifier)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Wt::Auth::PasswordService::setVerifier </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classWt_1_1Auth_1_1PasswordService_1_1AbstractVerifier.html">AbstractVerifier</a> *&#160;</td>
          <td class="paramname"><em>verifier</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Sets a password verifier which computes authorization checks. </p>
<p>The password verifier has as task to verify an entered password against a password hash stored in the database, and also to create or update a user's password hash.</p>
<p>The default password verifier is <code>0</code>.</p>
<p>The service takes ownership of the verifier.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classWt_1_1Auth_1_1PasswordService.html#afcac6c444116aa7e76bafded3516ff7c" title="Verifies a password for a given user.">verifyPassword()</a>, <a class="el" href="classWt_1_1Auth_1_1PasswordService.html#aa1cde5c463721c4373c0bf53edf3aaa1" title="Sets a new password for the given user.">updatePassword()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ae062b2d5d9d6374a54e3c4e85310a413"></a><!-- doxytag: member="Wt::Auth::PasswordService::strengthValidator" ref="ae062b2d5d9d6374a54e3c4e85310a413" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual AbstractStrengthValidator* Wt::Auth::PasswordService::strengthValidator </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the password strength validator. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classWt_1_1Auth_1_1PasswordService.html#ad15e73d283f21690d56efc2a8d8c6d98" title="Sets a validator which computes password strenght.">setStrengthValidator()</a> </dd></dl>

<p>Implements <a class="el" href="classWt_1_1Auth_1_1AbstractPasswordService.html#a8c6818142b299560af81bbae31555558">Wt::Auth::AbstractPasswordService</a>.</p>

</div>
</div>
<a class="anchor" id="aa1cde5c463721c4373c0bf53edf3aaa1"></a><!-- doxytag: member="Wt::Auth::PasswordService::updatePassword" ref="aa1cde5c463721c4373c0bf53edf3aaa1" args="(const User &amp;user, const WString &amp;password) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Wt::Auth::PasswordService::updatePassword </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> &amp;&#160;</td>
          <td class="paramname"><em>user</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classWt_1_1WString.html">WString</a> &amp;&#160;</td>
          <td class="paramname"><em>password</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Sets a new password for the given user. </p>
<p>This stores a new password for the user in the database. </p>

<p>Implements <a class="el" href="classWt_1_1Auth_1_1AbstractPasswordService.html#a4cb7e7f61e0896af9c1d13651219e693">Wt::Auth::AbstractPasswordService</a>.</p>

</div>
</div>
<a class="anchor" id="a3dbfe96f9b1d0215e1c4041814699b89"></a><!-- doxytag: member="Wt::Auth::PasswordService::verifier" ref="a3dbfe96f9b1d0215e1c4041814699b89" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classWt_1_1Auth_1_1PasswordService_1_1AbstractVerifier.html">AbstractVerifier</a>* Wt::Auth::PasswordService::verifier </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the password verifier. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classWt_1_1Auth_1_1PasswordService.html#a76933208fb6cbf7218d5acc0b1d5457c" title="Sets a password verifier which computes authorization checks.">setVerifier()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="afcac6c444116aa7e76bafded3516ff7c"></a><!-- doxytag: member="Wt::Auth::PasswordService::verifyPassword" ref="afcac6c444116aa7e76bafded3516ff7c" args="(const User &amp;user, const WString &amp;password) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__auth.html#ga001a66930b52328e78649572d6922bcc">PasswordResult</a> Wt::Auth::PasswordService::verifyPassword </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classWt_1_1Auth_1_1User.html">User</a> &amp;&#160;</td>
          <td class="paramname"><em>user</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classWt_1_1WString.html">WString</a> &amp;&#160;</td>
          <td class="paramname"><em>password</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Verifies a password for a given user. </p>
<p>The supplied password is verified against the user's credentials stored in the database. If password account throttling is enabled, it may also refuse an authentication attempt.</p>
<dl class="see"><dt><b>See also:</b></dt><dd>setVerifier(), setAttemptThrottlingEnabled() </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classWt_1_1Auth_1_1PasswordService.html#a76933208fb6cbf7218d5acc0b1d5457c" title="Sets a password verifier which computes authorization checks.">setVerifier()</a>, <a class="el" href="classWt_1_1Auth_1_1PasswordService.html#ad34f849188b771b47ed09e2362b548a5" title="Configures password attempt throttling.">setAttemptThrottlingEnabled()</a> </dd></dl>

<p>Implements <a class="el" href="classWt_1_1Auth_1_1AbstractPasswordService.html#a3baff128b654ac06f27b57c15c8923d8">Wt::Auth::AbstractPasswordService</a>.</p>

</div>
</div>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<hr size="1"><address style="text-align: right; margin: 3px"><small>
Generated on Thu Nov 1 2012 for <a href="http://www.webtoolkit.eu/wt">the
C++ Web Toolkit (Wt)</a> by&nbsp;<a
href="http://www.doxygen.org/index.html"><img src="doxygen.png"
alt="doxygen" border="0" style="vertical-align: middle; display:
inline-block; height: 2em"></a> 1.7.5.1</small></address>
</body>
</html>