1

ログインURLを上書きするにはどうすればよいですか?

プロパティとしてAuthenticateAttributeに追加できますか?

4

3 に答える 3

4

それが新しいかどうかはわかりませんが、コードを見ると、実際にはAuthFeatureコンストラクターのオプションの3番目のパラメーターであるため、次のことができます。

//htmlRedirect is optional 3rd param of AuthFeature constructor, here passing "~/signin"
Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] { new CredentialsAuthProvider(), }, "~/signin"));
于 2015-03-24T09:17:25.060 に答える
2

ServiceStacksの認証メカニズムを使用する場合は、どちらServiceStackControllerかから継承するかServiceStackController<T>、前者を継承します。

ログインURLは、のLoginRedirectUrlプロパティによって指定されますServiceStackController

public virtual string LoginRedirectUrl
{
    get { return "/login?redirect={0}"; }
}

仮想であるため、独自のコントローラーでオーバーライドするだけです。またはさらに良いことに、から継承する独自の抽象ベースコントローラを作成しますServiceStackController。次に、すべてのコントローラーにそのコントローラーを継承させます。これで、ログインURLなどを制御する単一のポイントができました。

public abstract class MyControllerBase : ServiceStackController
{
    public override string LoginRedirectUrl
    {
        get { return "/letslogin?redirectTo={0}"; }
    }
}
于 2012-08-09T10:01:03.357 に答える
1

System.Web.Security.FormsAuthentication名前空間:

FormsAuthentication.LoginUrl

Web.config値をオーバーライドする場合は、独自のauthorize属性を実装するだけです。

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
public class CustomAuthorize: AuthorizeAttribute{
    public override void OnAuthorization(AuthorizationContext filterContext) {
        //If the request does not provide authentication, then perform a redirect
        if (!filterContext.HttpContext.Request.IsAuthenticated) {
            var loginUrl = FormsAuthentication.LoginUrl; //Change your URL here if needed.

            filterContext.Result = new RedirectResult(loginUrl);
        } else {
            //Since the request was authenticated, perform the default authorization check.
            base.OnAuthorization(filterContext);
        }
    }
}
于 2012-07-02T22:04:13.570 に答える