gpt4 book ai didi

asp.net - 将 asp.net 身份验证与 servicestack 结合使用

转载 作者:行者123 更新时间:2023-12-02 16:46:24 25 4
gpt4 key购买 nike

我已经编写了几个带有表单例份验证的 ms lightswitch 应用程序 -> 这会在 sql server 中创建 aspnet_* 表。如何在服务堆栈 - 应用程序中使用定义的用户、密码,甚至成员身份、角色和应用程序权限?

最佳答案

我还没有对此进行测试,但我认为它应该可以帮助您入门。很高兴纠正我的任何步骤。

我认为你需要做的事情..

  • 为了对两个“系统”进行身份验证,您需要设置 Forms cookie 并保存您的 ServiceStack session 。

不要调用FormsAuthentication.Authentiate(),而是执行如下所示的操作。在您完成所有步骤之前,此操作不会起作用。

var apiAuthService = AppHostBase.Resolve<AuthService>();
apiAuthService.RequestContext = System.Web.HttpContext.Current.ToRequestContext();
var apiResponse = apiAuthService.Authenticate(new Auth
{
UserName = model.UserName,
Password = model.Password,
RememberMe = false
});
  • 创建 IUserAuthRepository 的子类(用于从 aspnet_* 表检索成员资格/用户/角色并填充 ServiceStack AuthUser)。

CustomAuthRepository.cs(不完整,但应该可以帮助您入门)

public class CustomAuthRepository : IUserAuthRepository
{
private readonly MembershipProvider _membershipProvider;
private readonly RoleProvider _roleProvider;

public CustomAuthRepository()
{
_membershipProvider = Membership.Provider;
_roleProvider = Roles.Provider;
}

public UserAuth GetUserAuthByUserName(string userNameOrEmail)
{
var user = _membershipProvider.GetUser(userNameOrEmail, true);
return new UserAuth {FirstName = user.UserName, Roles = _roleProvider.GetRolesForUser(userNameOrEmail).ToList() //FILL IN REST OF PROPERTIES};
}

public bool TryAuthenticate(string userName, string password, out UserAuth userAuth)
{
//userId = null;
userAuth = GetUserAuthByUserName(userName);
if (userAuth == null) return false;

if (FormsAuthentication.Authenticate(userName, password))
{
FormsAuthentication.SetAuthCookie(userName, false);
return true;
}

userAuth = null;
return false;
}
//MORE METHODS TO IMPLEMENT...
}
  • 在 AppHost 配置方法中为 ServiceStack 连接身份验证。

    var userRep = new CustomAuthRepository();

    container.Register<IUserAuthRepository>(userRep);

    Plugins.Add(
    new AuthFeature(() => new AuthUserSession(),
    new IAuthProvider[] {
    new CredentialsAuthProvider()
    }
    ));

关于asp.net - 将 asp.net 身份验证与 servicestack 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15068774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com