use*_*241 4 asp.net authentication servicestack
我用表单身份验证编写了几个ms lightswitch应用程序 - >这在sql server中创建了aspnet_*表.如何在服务栈 - 应用程序中使用已定义的用户,密码,甚至成员资格,角色和应用程序权限?
我没有测试过这个,但我认为它应该让你开始.很高兴我的任何步骤都得到了纠正.
我认为你需要做的事情......
而不是打电话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
});
Run Code Online (Sandbox Code Playgroud)
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...
}
Run Code Online (Sandbox Code Playgroud)
AppHost配置方法中的ServiceStack的线路认证.
var userRep = new CustomAuthRepository();
container.Register<IUserAuthRepository>(userRep);
Plugins.Add(
new AuthFeature(() => new AuthUserSession(),
new IAuthProvider[] {
new CredentialsAuthProvider()
}
));
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
1150 次 |
| 最近记录: |