本文整理汇总了C#中IAuthenticationService.RedirectToAuthenticationProvider方法的典型用法代码示例。如果您正苦于以下问题:C# IAuthenticationService.RedirectToAuthenticationProvider方法的具体用法?C# IAuthenticationService.RedirectToAuthenticationProvider怎么用?C# IAuthenticationService.RedirectToAuthenticationProvider使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IAuthenticationService
的用法示例。
在下文中一共展示了IAuthenticationService.RedirectToAuthenticationProvider方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: HomeModule
public HomeModule(IAuthenticationService authenticationService)
{
Get["/"] = parameters => View["login"];
Get["/RedirectToAuthenticate/{providerKey}"] = parameters =>
{
// State key.
Session[SessionGuidKey] = Guid.NewGuid();
// TODO: What happens if an invalid providerKey is provided?
var authenticationServiceSettings = AuthenticationServiceSettingsFactory.
GetAuthenticateServiceSettings(parameters.providerKey);
authenticationServiceSettings.State =
Session[SessionGuidKey].ToString();
Uri uri =
authenticationService.
RedirectToAuthenticationProvider(authenticationServiceSettings);
return Response.AsRedirect(uri.AbsoluteUri);
};
Get["/AuthenticateCallback"] = parameters =>
{
if (string.IsNullOrEmpty(Request.Query.providerKey))
{
throw new ArgumentNullException("providerKey");
}
// Retrieve the state for the XSS check.
// It's possible that a person might hit this resource directly, before any session value
// has been set. As such, we should just fake some state up, which will not match the
// CSRF check.
var existingState = (Guid)(Session[SessionGuidKey] ?? Guid.NewGuid());
var model = new AuthenticateCallbackViewModel();
var querystringParameters = new NameValueCollection();
foreach (var item in Request.Query)
{
querystringParameters.Add(item, Request.Query[item]);
}
try
{
model.AuthenticatedClient =
authenticationService.CheckCallback(Request.Query.providerKey,
querystringParameters,
existingState.ToString());
}
catch (Exception exception)
{
model.Exception = exception;
}
return View["AuthenticateCallback", model];
};
}
示例2: WorldDominationAuthenticationModule
public WorldDominationAuthenticationModule(IAuthenticationService authenticationService,
IAuthenticationCallbackProvider authenticationCallbackProvider)
{
Get["/authentication/redirect/{providerkey}"] = _ =>
{
if (string.IsNullOrEmpty((string)_.providerkey))
{
throw new ArgumentException(
"You need to supply a valid provider key so we know where to redirect the user.");
}
var settings = authenticationService.GetAuthenticateServiceSettings((string)_.providerkey);
var guidString = Guid.NewGuid().ToString();
Session[StateKey] = guidString;
settings.State = guidString;
settings.CallBackUri = GetReturnUrl("/authentication/authenticatecallback",
(string)_.providerkey);
Uri uri = authenticationService.RedirectToAuthenticationProvider(settings);
return Response.AsRedirect(uri.AbsoluteUri);
};
Get["/authentication/authenticatecallback"] = _ =>
{
if (string.IsNullOrEmpty(Request.Query.providerkey))
{
throw new ArgumentException("No provider key was supplied on the callback.");
}
var existingState = (Session[StateKey] as string) ?? string.Empty;
var model = new AuthenticateCallbackData();
var querystringParameters = new NameValueCollection();
foreach (var item in Request.Query)
{
querystringParameters.Add(item, Request.Query[item]);
}
try
{
model.AuthenticatedClient =
authenticationService.GetAuthenticatedClient((string) Request.Query.providerKey,
querystringParameters, existingState);
}
catch (Exception exception)
{
model.Exception = exception;
}
return authenticationCallbackProvider.Process(this, model);
};
}
开发者ID:codeprogression,项目名称:WorldDomination.Web.Authentication,代码行数:54,代码来源:WorldDominationAuthenticationModule.cs
示例3: HomeModule
public HomeModule(IAuthenticationService authenticationService)
{
Get["/"] = parameters => View["login"];
Get["/RedirectToAuthenticate/{providerKey}"] = parameters =>
{
// State key.
Session[SessionGuidKey] = Guid.NewGuid();
var settings =
authenticationService.GetAuthenticateServiceSettings(parameters.providerKey.Default<string>());
settings.State = Session[SessionGuidKey].ToString();
settings.CallBackUri = GetReturnUrl(Context, "/AuthenticateCallback", parameters.providerKey);
Uri uri = authenticationService.RedirectToAuthenticationProvider(settings);
return Response.AsRedirect(uri.AbsoluteUri);
};
Get["/AuthenticateCallback"] = parameters =>
{
if (string.IsNullOrEmpty(Request.Query.providerKey))
{
throw new ArgumentNullException("providerKey");
}
// Retrieve the state for the XSS check.
// It's possible that a person might hit this resource directly, before any session value
// has been set. As such, we should just fake some state up, which will not match the
// CSRF check.
var existingState = (Guid) (Session[SessionGuidKey] ?? Guid.NewGuid());
var model = new AuthenticateCallbackViewModel();
try
{
model.AuthenticatedClient =
authenticationService.GetAuthenticatedClient(Request.Query.providerKey,
Request.Query,
existingState.ToString());
}
catch (Exception exception)
{
model.Exception = exception;
}
return View["AuthenticateCallback", model];
};
}
示例4: RedirectToAuthenticationProvider
private dynamic RedirectToAuthenticationProvider(IAuthenticationService authenticationService,
IAuthenticationCallbackProvider authenticationCallbackProvider,
string providerKey, Uri identifier = null)
{
if (authenticationService == null)
{
throw new ArgumentNullException();
}
if (authenticationCallbackProvider == null)
{
throw new ArgumentNullException("authenticationCallbackProvider");
}
if (string.IsNullOrEmpty(providerKey))
{
throw new ArgumentNullException("providerKey");
}
// Grab the required Provider settings.
var settings = authenticationService.GetAuthenticateServiceSettings(providerKey, Request.Url);
// An OpenId specific settings provided?
if (identifier != null &&
settings is IOpenIdAuthenticationServiceSettings)
{
((IOpenIdAuthenticationServiceSettings) settings).Identifier = identifier;
}
// Remember the State value (for CSRF protection).
Session[StateKey] = settings.State;
//// Convention: If no redirectUrl data has been provided, then default to the Referrer, if one exists.
//if (RedirectUrl != null &&
// !string.IsNullOrEmpty(RedirectUrl.AbsoluteUri))
//{
// // We have extra state information we will need to retrieve.
// Session[RedirectUrlKey] = RedirectUrl.AbsoluteUri;
//}
//else if (Request != null &&
// Request. != null &&
// !string.IsNullOrEmpty(Request.UrlReferrer.AbsoluteUri))
//{
// Session[RedirectUrlKey] = Request.UrlReferrer.AbsoluteUri;
//}
// Determine the provider's end point Url we need to redirect to.
// NOTE: It's possible we're trying to goto an OpenId endpoint. But the user has entered
var uri = authenticationService.RedirectToAuthenticationProvider(settings);
if (uri == null || string.IsNullOrEmpty(uri.AbsoluteUri))
{
return authenticationCallbackProvider.OnRedirectToAuthenticationProviderError(this,
"No valid Uri was found - not sure where to redirect to?");
}
// Kthxgo!
return Response.AsRedirect(uri.AbsoluteUri);
}
开发者ID:DavidChristiansen,项目名称:World-Domination.Web.Authentication,代码行数:59,代码来源:WorldDominationAuthenticationModule.cs