2013-01-07 13 views
5

私はWebSecurity + SimpleMembershipを使用したいと思いますが、カスタム/代替認証方法で(オプションで)ログインする機能を実装しています。WebSecurity + SimpleMembershipを使用して手動で「ユーザーをログイン」するにはどうすればよいですか?

WebSecurity.Loginには、ユーザー名とパスワードの両方を必要とするメソッド署名が1つしかありません。私は、例えば、パスワードのチェックをスキップしたいと思います。:

if (MyCustomAuthenticationMethod.Authenticate(username, customData)) { 
    WebSecurity.Login(username); // Login without password check, method doesn't exist though 
} 

私は、カスタムのauth-方法はOAuthWebSecurityが存在している与えられた可能性あると仮定し、私は私自身の実装については移動するかどうかはわかりません。

答えて

8

さて、あなたは、単にこれはクッキーを作成し、ユーザーを認証しますバック認証のルートに行くと直接

FormsAuthentication.SetAuthCookie 

を呼び出すことができます。 Asp.net Memebership Authorization without password

+0

最後に! - これは魅力のように動作します、ありがとう! – BrainSlugs83

+1

ブラウザでユーザーをログインしますが、WebSecurity.CurrentIdは変更されません –

1

パスワードなしでログインするのは簡単ではありませんでした。一つの方法は、独自のカスタムOAuthのプラグインを作成し、単にこのような独自のトークンでそれを呼び出すことが考えられます。

OAuthWebSecurity.Login("google", "token", true); 

カスタムのOAuthプロバイダーを作成する方法をここで見つけることができます。 http://www.codeguru.com/columns/experts/implementing-oauth-features-in-asp.net-mvc-4.htm

そして、あなたはここにコードを閲覧することができます:

internal static bool LoginCore(HttpContextBase context, string providerName, string providerUserId, bool createPersistentCookie) 
    { 
     var provider = GetOAuthClient(providerName); 
     var securityManager = new OpenAuthSecurityManager(context, provider, OAuthDataProvider); 
     return securityManager.Login(providerUserId, createPersistentCookie); 
    } 
01: https://github.com/ASP-NET-MVC/aspnetwebstack/blob/master/src/Microsoft.Web.WebPages.OAuth/OAuthWebSecurity.cs

ここでは、ユーザがパスワードなしで認証される方法の内部を示しOAuthWebSecurity.csファイルからの抜粋です

すでにこのプラグインを作成しているユーザーがいる可能性があります。

関連する問題