Ich plane, die Codes unten für meine Web-API-Sicherheit zu verwenden, aber ich bin mir nicht sicher, ob das genug sichere und logische Weg ist. Ich möchte nicht OWIN und AspNet.Identity verwenden, weil es für mich sehr kompliziert ist und ich nicht vollständig verstehe und ich nicht weiß, wie ich DB-Tabellen, Benutzerrollen usw. besonders anpasse. Aber mein Weg ist einfach und sehr anpassbar für mich.Token-Autorisierung ohne Identität
Dies ist CustomAuthorizeAttribute;
public class CustomAuthorize : AuthorizeAttribute
{
public override void OnAuthorization(HttpActionContext actionContext)
{
if ((actionContext.Request.Headers.GetValues("Host").FirstOrDefault().Contains("localhost:15742")))
{
IEnumerable<string> access_token;
if (actionContext.Request.Headers.TryGetValues("Authorization", out access_token))
{
var user = GetUserByToken(access_token);
if (user!=null && !user.TokenIsExpired)
{
HttpContext.Current.Response.AddHeader("WWW-Authenticate", "Custom " + access_token.FirstOrDefault());
return;
}
else
{
actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Unauthorized);
HttpContext.Current.Response.AddHeader("WWW-Authenticate", "Custom");
return;
}
}
else
{
actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Unauthorized);
}
}
else
{
actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Forbidden);
}
}
}
Und das ist Frontend
<script type="text/javascript">
$(function() {
var access_token = $.cookie('access_token');
if (access_token == undefined) {
$.cookie('access_token', 'test-token');
}
$.ajax({
url: '/api/account',
headers: { access_token: access_token },
success: function (data) {
document.write(data.name + " " + data.lastname);
}
});
});
</script>
Durch die Art und Weise unter Verwendung von i etwa für mein Englisch bedaure. Ich hoffe, Sie verstehen mein Problem und ich warte auf Ihre Vorschläge.
meine Antwort-Check: http://stackoverflow.com/questions/40281050/jwt-authentication-for-asp-net-web-api/40284152#40284152 –
Es macht mir Angst, wenn Menschen bauen aufgrund mangelnder Kenntnisse/falscher Annahmen selbst etwas auf und wollen keine Zeit in das Lernen als Rahmen investieren, von dem sie abhängen. Alles scheint auf den ersten Blick kompliziert. Ein bisschen tauchen und lernen. Außerdem müssen Sie keine db für die Token-Authentifizierung verwenden. Bitte lesen Sie dies und versuchen Sie es zumindest: https://offering.solutions/articles/asp-net/token-authentication-with-claims-and-asp-net-webapi/ –
der Link ist kaputt oder Website down –