是否可以在没有数据库的情况下使用WebSecurity或SimpleMembersshipProvider?这主要是因为我的Web服务器将使用“中央服务器”中的所有逻辑,而不是直接访问数据库。
答案 0 :(得分:2)
不确定。请参阅如何实施自定义成员资格提供程序:http://www.codeproject.com/Articles/165159/Custom-Membership-Providers
基本上你需要做的是继承MembershipProvider类并实现ValidateUser等基本方法,并在web.config中注册新的提供程序。您可以使用任何您喜欢的数据存储。
另一种选择是手动处理用户身份验证,并使用FormsAuthentication.Authenticate()发送带有用户请求的身份验证cookie。如果您希望我可以向您发送代码示例,此方法也适用于[授权]过滤器。
编辑:
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);