ログインURLを上書きするにはどうすればよいですか?
プロパティとしてAuthenticateAttributeに追加できますか?
ログインURLを上書きするにはどうすればよいですか?
プロパティとしてAuthenticateAttributeに追加できますか?
それが新しいかどうかはわかりませんが、コードを見ると、実際にはAuthFeatureコンストラクターのオプションの3番目のパラメーターであるため、次のことができます。
//htmlRedirect is optional 3rd param of AuthFeature constructor, here passing "~/signin"
Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] { new CredentialsAuthProvider(), }, "~/signin"));
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}"; }
}
}
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);
}
}
}