2017-06-15 14 views
0

私はMVC 5 for ASP.NETを使用しています。MVC 5属性の承認

カスタムのauthorize属性を作成しようとしています。 OpenIdとセッション変数が存在する場合、ユーザは自分のアプリケーションに対して認証されます。私は[OpenIdAuthorize]を私のコントローラに追加しました。サインインしてから見ると、私のアプリケーションで/ openid/indexに戻ってきます。セッション変数が存在します。私はブレークポイントを追加しましたが、決して到達しません。ここで

public class OpenIdAuthorizeAttribute : System.Web.Mvc.AuthorizeAttribute 
{ 

    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     if (httpContext.Session["FriendlyEmail"] == null) 
      return false; 
     else 
      return true; 
    } 

    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) 
    { 
     if(filterContext.HttpContext.Session["FriendlyEmail"] == null) 
      filterContext.Result = new RedirectResult("/openid/index"); 
    } 
} 

は私のコントローラである:ここでは

[OpenIdAuthorize] 
public class RuleSetController : Controller 
+0

あなたは 'AuthorizeCore'関数をオーバーライドしますか? –

+0

最新の回答をご覧ください。問題は解決しません。 –

+1

'AuthorizeCore'関数のブレークポイントにヒットがありますか? –

答えて

0

は私のソリューションです:

  1. filter.configには何も入力しないでください。 web.configファイルで
  2. 、このコードを入力します(https://support.microsoft.com/en-us/help/301240/how-to-implement-forms-based-authentication-in-your-asp.net-application-by-using-c-.netを形成>認証モードを参照してください)
  3. のみAuthorizeCoreを上書きするAuthorizeAttributeを調整します。他の方法をオーバーライドします。

    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
        if (httpContext.Session["FriendlyEmail"] == null) 
         return false; 
        else 
         return true; 
    } 
    
関連する問題