是否可以在没有数据库的情况下使用 WebSecurity 或 SimpleMembersshipProvider?这主要是因为我的 Web 服务器将使用来自“中央服务器”的所有逻辑,而不是直接访问数据库。
问问题
1848 次
1 回答
2
当然。请参阅如何实现自定义会员提供程序:http: //www.codeproject.com/Articles/165159/Custom-Membership-Providers
基本上你需要做的是继承 MembershipProvider 类并实现 ValidateUser 等基本方法,一旦完成在 web.config 中注册新的提供者。您可以使用任何您喜欢的数据存储。
另一种选择是手动处理用户身份验证并使用 FormsAuthentication.Authenticate() 发送带有用户请求的身份验证 cookie。此方法也适用于 [Authorize] 过滤器,如果您愿意,我可以向您发送代码示例。
编辑:
public class CustomAuthorizeFilter : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
var authenCookie = httpContext.Request.Cookies.Get(FormsAuthentication.FormsCookieName);
if (authenCookie == null) return false;
return true;
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new RedirectResult("/");
}
}
登录方式:
var ticket = new FormsAuthenticationTicket(1, // version
token, // user name
DateTime.Now, // create time
DateTime.Now.AddDays(1), // expire time
model.RememberMe, // persistent
""); // user data, such as roles
var strEncryptedTicket = FormsAuthentication.Encrypt(ticket);
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, strEncryptedTicket);
Response.Cookies.Add(cookie);
于 2013-04-20T21:52:33.187 回答