Использование информации ролей с помощью ASP.NET AJAX
Обновлен: Ноябрь 2007
Роли ASP.NET позволяют сгруппировать пользователей, прошедших проверку подлинности, и рассматривать каждую группу как одно целое. Это может быть полезно для любых действий, применяемых к нескольким пользователям, например разрешение или запрет доступа к ресурсам на сервере.
Служба роли приложения Microsoft AJAX (библиотека) позволяет получить доступ к ролям аутентифицированных пользователей из клиентского сценария в веб-приложении ASP.NET с включенным AJAX. Можно использовать службу роли приложения Microsoft AJAX (библиотека) для выполнения задач на основе ролей с помощью клиентского сценария. При запуске страницы можно вызвать прокси-класс ECMAScript (JavaScript) RoleService, который автоматически создается службой роли приложения и загружается в браузер.
В этом разделе показано, как вызвать службу роли приложения ASP.NET из обозревателя с помощью JavaScript.
Включение службы роли
Для использования службы роли из клиентского сценария необходимо включить его с помощью следующего элемента в файле Web.config приложения:
<system.web.extensions>
<scripting>
<webServices
< rolesService enabled="true" />
</webServices
</scripting>
</system.web.extensions>
Дополнительные сведения см. в разделе Практическое руководство. Конфигурация служб ASP.NET в ASP.NET AJAX.
Пример
В следующем примере демонстрируется использование службы роли из клиентского сценария:
Примечание. |
---|
Чтобы выполнить этот пример, убедитесь, что имеется по крайней мере один пользователь, определенный в базе данных членства приложения. Сведения о создании пользователя в стандартной базе данных SQL Server, экспресс-выпуск содержатся в разделе Использование проверки подлинности с помощью форм в ASP.NET AJAX. |
<%@ Page Language="VB" Title="Using Roles Service" %>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Using Roles Service</title>
<style type="text/css">
body { font: 11pt Trebuchet MS;
padding-top: 72px;
text-align: center }
.text { font: 8pt Trebuchet MS }
</style>
<script language="javascript" type="text/jscript">
</script>
</head>
<body>
<form id="form1" runat="server">
<h2>Access Authenticated User's Roles</h2>
Using the Sys.Services.RoleService client type to obtain roles information.
<p>
You must be authenticated to access roles information. <br />
Refer to the Forms Authentication example.
</p>
<asp:ScriptManager runat="server" ID="ScriptManagerId">
<Scripts>
<asp:ScriptReference Path="Roles.js" />
</Scripts>
</asp:ScriptManager>
<hr />
<table>
<tr>
<td align="left">User's roles: </td>
<td align="left">
<input type="button" id="UserRoles"
onclick="ReadUserRoles(); return false;"
value="UserRoles" />
</td>
</tr>
<tr>
<td align="left">Is User in Administrators Role?: </td>
<td align="left" >
<input type="button" id="UserInRole"
onclick="UserIsInRole('Administrators'); return false;"
value="Check Role" /></td>
</tr>
<tr>
<td align="left">Role Service path: </td>
<td align="left">
<input type="button" id="ServicePathId"
onclick="GetRoleServicePath(); return false;"
value="Role Service Path" /></td>
</tr>
<tr>
<td align="left">Role Service timeout: </td>
<td align="left">
<input type="button" id="ServiceTimeoutId"
onclick="GetRoleServiceTimeout(); return false;"
value="Role Service Timeout" /></td>
</tr>
</table>
</form>
<div id="placeHolder" ></div>
</body>
</html>
<%@ Page Language="C#" Title="Using Roles Service" %>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Using Roles Service</title>
<style type="text/css">
body { font: 11pt Trebuchet MS;
padding-top: 72px;
text-align: center }
.text { font: 8pt Trebuchet MS }
</style>
<script language="javascript" type="text/jscript">
</script>
</head>
<body>
<form id="form1" runat="server">
<h2>Access Authenticated User's Roles</h2>
Using the Sys.Services.RoleService client type to obtain roles information.
<p>
You must be authenticated to access roles information. <br />
Refer to the Forms Authentication example.
</p>
<asp:ScriptManager runat="server" ID="ScriptManagerId">
<Scripts>
<asp:ScriptReference Path="Roles.js" />
</Scripts>
</asp:ScriptManager>
<hr />
<table>
<tr>
<td align="left">User's roles: </td>
<td align="left">
<input type="button" id="UserRoles"
onclick="ReadUserRoles(); return false;"
value="UserRoles" />
</td>
</tr>
<tr>
<td align="left">Is User in Administrators Role?: </td>
<td align="left" >
<input type="button" id="UserInRole"
onclick="UserIsInRole('Administrators'); return false;"
value="Check Role" /></td>
</tr>
<tr>
<td align="left">Role Service path: </td>
<td align="left">
<input type="button" id="ServicePathId"
onclick="GetRoleServicePath(); return false;"
value="Role Service Path" /></td>
</tr>
<tr>
<td align="left">Role Service timeout: </td>
<td align="left">
<input type="button" id="ServiceTimeoutId"
onclick="GetRoleServiceTimeout(); return false;"
value="Role Service Timeout" /></td>
</tr>
</table>
</form>
<div id="placeHolder" ></div>
</body>
</html>
var roleProxy;
var roles;
// This function creates the role proxy and
// sets its default callback functions.
function pageLoad()
{
// Create role service proxy.
roleProxy = Sys.Services.RoleService;
// Set the default failed callback function.
DefaultFailedCallBack();
// Set the default load completed callback function.
DefaultLoadCompletedCallBack()
}
// This function sets and gets the role service
// default failed callback function.
function DefaultFailedCallBack()
{
// Set default failed callback function.
roleProxy.set_defaultFailedCallback(FailedCallback);
// Get the default callback function.
var failedCallBack =
roleProxy.get_defaultFailedCallback();
alert(failedCallBack);
}
// This function sets and gets the role service
// default load completed callback function.
function DefaultLoadCompletedCallBack()
{
// Set the default callback function.
roleProxy.set_defaultLoadCompletedCallback(LoadCompletedCallback);
// Get the default callback function.
var loadCompletedCallBack =
roleProxy.get_defaultLoadCompletedCallback();
alert(loadCompletedCallBack);
}
// This function checks if the currently
// authenticated user belongs to the
// passed role.
function UserIsInRole(role)
{
DisplayInformation("");
var isUserInRole = roleProxy.isUserInRole(role);
DisplayInformation("The user is in the " + role +
" role: " + isUserInRole);
}
// This function gets the role service path.
function GetRoleServicePath()
{
// Get the role service path.
var roleServicePath =
Sys.Services.RoleService.get_path();
if (roleServicePath == "")
{
DisplayInformation(
"The role service path is the default value.");
}
}
// This function gets the roles of the
// currently authenticated user.
function ReadUserRoles()
{
// Clear the feedback output.
DisplayInformation("");
// You must load the user's roles
// first before you can use them.
roleProxy.load();
// Read the user's roles.
roles = roleProxy.get_roles();
}
// This function gets the role service timeout.
function GetRoleServiceTimeout()
{
// Get the role service path.
var roleServiceTimeout =
Sys.Services.RoleService.get_timeout();
DisplayInformation(
"Role service timeout: " + roleServiceTimeout);
}
// This is the callback function
// called if the role service load function
// completed.
function LoadCompletedCallback(roles)
{
// Read the user's roles loaded
// before.
roles.sort();
for(var i = 0; i < roles.length; i++)
{
var roleInfo = "Role: " + roles[i];
DisplayInformation(roleInfo);
}
}
// This is the callback function
// called if the role service fails.
function FailedCallback(error)
{
DisplayInformation("Error: " + error.get_message());
}
// This function displays user's
// feedback information.
function DisplayInformation(text)
{
document.getElementById('placeHolder').innerHTML =
"<br/>"+ text;
}
if (typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();
См. также
Задачи
Практическое руководство. Конфигурация служб ASP.NET в ASP.NET AJAX
Основные понятия
Использование веб-служб в технологии AJAX ASP.NET
Вызов веб-служб из клиентского сценария
Использование проверки подлинности с помощью форм в ASP.NET AJAX
Использование сведений о профиле с ASP.NET AJAX
Класс Sys.Services.AuthenticationService